R语言 用data.table进行数据操作
数据操作 是数据分析过程中的一个关键步骤,因为它允许我们以适合特定分析或可视化的方式准备和组织我们的数据。有许多不同的工具和技术用于数据处理,这取决于数据的类型和结构,以及处理的具体目标。
data.table包是一个R包,它提供了R中data.frame类的增强版。它的语法和功能使得操作和处理大型数据集变得更加容易和快速。
date.table是被开发人员下载最多的软件包之一,也是数据科学家的理想选择。
安装data.table软件包
安装data.table包和安装其他包一样简单。你可以在CRAN的命令行工具中使用下面的命令来安装这个包 –
使用CRAN安装’data.table’包
install.packages('data.table')
从Gitlab安装开发版本
install.packages("data.table",
repos="https://Rdatatable.gitlab.io/data.table")
导入数据集
在R编程语言中,我们有大量的内置数据集,人们可以将其作为演示数据来展示R函数如何工作。
其中一个流行的内置数据集是 “鸢尾花 “数据集。这个数据集为我们提供了50种花(三个不同的物种)的四个不同属性的测量。
我们在data.table中处理数据集的方式与在data.frame中处理数据集的方式完全不同。让我们深入了解一下,得到一些启示。
data.table为我们提供了fread()函数(快速读取),这基本上是data.table的read.csv()函数的版本。与read.csv()函数类似,它可以读取存储在本地的文件,也有能力读取网站上托管的文件。
示例
# Importing library
library(data.table)
# Creating a dataset
myDataset <- fread("https://raw.githubusercontent.com/gexijin/learnR/master/datasets/iris.csv")
# print the iris dataset
print(myDataset)
输出
[1] "data.table" "data.frame"
正如你在上面的输出中看到的,导入的数据被直接存储为data.table。
data.table一般继承自data.frame类,因此它本身就是一个data.frame。因此,那些接受data.frame的函数也会为data.table完成工作。
显示IRIS数据集
示例
# Importing library
library(data.table)
# Creating a dataset
myDataset <- fread(
"https://raw.githubusercontent.com/gexijin/learnR/master/datasets/iris.cs
v")
# print the iris dataset
print(myDataset)
输出
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1: 5.1 3.5 1.4 0.2 setosa
2: 4.9 3.0 1.4 0.2 setosa
3: 4.7 3.2 1.3 0.2 setosa
4: 4.6 3.1 1.5 0.2 setosa
5: 5.0 3.6 1.4 0.2 setosa
---
146: 6.7 3.0 5.2 2.3 virginica
147: 6.3 2.5 5.0 1.9 virginica
148: 6.5 3.0 5.2 2.0 virginica
149: 6.2 3.4 5.4 2.3 virginica
150: 5.9 3.0 5.1 1.8 virginica
在Iris数据集中有150行和5列。
让我们打印虹膜数据集的前六行
head(myDataset)
输出
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1: 5.1 3.5 1.4 0.2 setosa
2: 4.9 3.0 1.4 0.2 setosa
3: 4.7 3.2 1.3 0.2 setosa
4: 4.6 3.1 1.5 0.2 setosa
5: 5.0 3.6 1.4 0.2 setosa
6: 5.4 3.9 1.7 0.4 setosa
根据一个条件过滤行
data.fram包的主要问题是,这个包对它的列名不是很了解。因此,当我们需要根据列的条件来选择或过滤一些行时,有时会变得很困难。
data.table包具有先进的功能,使它能够知道其列名。使用data.table包,我们可以通过在方括号内传递列条件来轻松地过滤出行。
myDataset[column_condition]
这里column_condition指定了列的条件,在此基础上,某些行将被选中。
让我们考虑一个例子,用 “Sepal.Length==5.1 & Petal.Length==1.4 “的条件过滤数据集。
示例
# Importing library
library(data.table)
# Creating a dataset
myDataset <- fread(
"https://raw.githubusercontent.com/gexijin/learnR/master/datasets/iris.csv")
# datatable syntax to filter rows
# based on column condition
myDataset[Sepal.Length==5.1 & Petal.Length==1.4,]
输出
Sepal.Width Petal.Length Petal.Width Species
1: 5.1 3.5 1.4 0.2 setosa
2: 5.1 3.5 1.4 0.3 setosa
正如你在上面的输出中看到的,有两行被过滤掉了,它们与方括号内提供的列条件相匹配。
选择列
现在我们将看到如何使用data.table包选择数据集的列。下面给出了选择列的基本语法。
myDataset[, column_number, with = F]
她的column_number必须等于你要子集的列(列以1为单位)。
示例
让我们考虑一个例子,我们想选择虹膜数据集的第二列 —
library(data.table)
# Creating a dataset
myDataset <- fread(
"https://raw.githubusercontent.com/gexijin/learnR/master/datasets/iris.csv")
# data.table syntax to subset second column
myDataset[, 2, with = F]
输出
Sepal.Width
1: 3.5
2: 3.0
3: 3.2
4: 3.1
5: 3.6
---
146: 3.0
147: 2.5
148: 3.0
149: 3.4
150: 3.0
正如你在上面的输出中看到的,虹膜数据集的第二列被选中。
示例
现在我们来选择多列。在下面的例子中,我们选择两列,即’花瓣.长度’和’物种’。
# Importing library
library(data.table)
# Creating a dataset
myDataset <- fread(
"https://raw.githubusercontent.com/gexijin/learnR/master/datasets/iris.csv")
columns <- c('Petal.Length', 'Species')
# selecting two columns- 'Petal.Length' and 'Species'
myDataset[, columns, with = F]
输出
Petal.Length Species
1: 1.4 setosa
2: 1.4 setosa
3: 1.3 setosa
4: 1.5 setosa
5: 1.4 setosa
---
146: 5.2 virginica
147: 5.0 virginica
148: 5.2 virginica
149: 5.4 virginica
150: 5.1 virginica
这里我们选择了两列,’花瓣.长度’和’物种’。
结论
在本教程中,我们已经涵盖了不同的数据处理技术,如导入数据集、根据列条件过滤出行等。我希望本教程能帮助你加强你在数据科学领域的知识。