使用 data.table 在 R 中进行数据操作


数据操作是数据分析过程中的一个关键步骤,因为它允许我们以适合特定分析或可视化的方式准备和组织数据。根据数据的类型和结构以及操作的具体目标,存在许多不同的数据操作工具和技术。

data.table 包是R的一个包,它提供了Rdata.frame类的增强版本。它的语法和功能使操作和处理大型数据集更容易、更快。

data.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 函数的工作方式。

一个这样的流行内置数据集是“Iris”数据集。此数据集提供了 50 朵花(三个不同物种)的四个不同属性的测量值。

我们在data.table中处理数据集的方式与在data.frame中处理数据集的方式大相径庭。让我们深入探讨这一点并获得一些见解。

data.table 提供了 fread() 函数(快速读取),它基本上是 data.table 的 read.csv() 函数版本。与 read.csv() 函数类似,它可以读取本地存储的文件,也可以读取网站上托管的文件。

示例

考虑以下程序,该程序导入作为 CSV 文件存储在互联网上的 iris 数据:

# 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 列。

让我们打印 iris 数据集的前六行

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

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

基于条件过滤行

data.frame 包的主要问题是该包不了解其列名。因此,当我们需要根据列条件选择或过滤某些行时,有时会变得困难。

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 基)

示例

让我们考虑一个示例,在这个示例中,我们想要选择 iris 数据集的第二列:

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

如您在上面的输出中看到的,已选择了 iris 数据集的第二列。

示例

现在让我们选择多列。在下面的示例中,我们选择两列,即 'Petal.Length' 和 'Species'。

# 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

在这里,我们选择了'Petal.Length' 和 'Species' 两列。

结论

在本教程中,我们介绍了不同的数据操作技术,例如导入数据集、根据列条件过滤行等。我希望本教程将帮助您加强在数据科学领域中的知识。

更新于:2023年1月17日

2K+ 次浏览

启动您的 职业生涯

完成课程获得认证

开始
广告