如何在r中使用rbindlist从多个数据表中创建数据表


R 中的rbindlist()函数可用于从许多 data.table 或 data.frame 对象的列表中创建 data.table。

该函数使用以下基本语法:

 rbindlist(l, use. names ="check", fill= FALSE , idcol= NULL )

金子:

  • l :包含 data.table、data.frame 或列表对象的列表。
  • use.names : TRUE 按列名称绑定。 FALSE 按位置绑定。
  • fill : TRUE 用 NA 填充缺失值。
  • idcol :创建一个列,指示这些行来自哪个列表项。

下面的例子展示了如何在实际中使用这个功能。

示例:使用rbindlist创建数据表

假设我们在 R 中有以下 data.table 和 data.frame 对象列表:

 library (data.table)

#create data frames and data tables
data1 <- data. table (team=c('A', 'B', 'C'),
                    dots=c(22, 27, 38))

data2 <- data. table (team=c('D', 'E', 'F'),
                    dots=c(22, 14, 20))

data3 <- data. frame (team=c('G', 'H', 'I'),
                    dots=c(11, 15, 18))

#view data frames and data tables
print (data1)
print (data2)
print (data3)

   team points
1: At 22
2:B27
3: C 38
   team points
1:D22
2:E14
3:F20
  team points
1 G 11
2:15 a.m.
3 I 18

我们可以使用以下rbindlist()函数将 data.table 和 data.frame 对象的列表绑定到单个 data.table 中:

 #define list of objects to bind together
data_list <- list(data1, data2, data3)

#bind together list of objects
big_data <- rbindlist(data_list)

#view result
big_data

   team points
1: At 22
2:B27
3: C 38
4:D22
5:E14
6:F20
7:G 11
8:15 a.m.
9: I 18

结果是一个包含九行的 data.table 对象,由我们提供的对象列表中的行组成。

我们还可以使用class()函数来验证结果是否确实是一个 data.table 对象:

 #view class of resulting object
class(big_data)

[1] "data.table" "data.frame"

我们看到结果确实是一个 data.table 对象。

使用rbindlist的优点

使用rbindlist的替代方法是将do.call与基础 R 中的 rbind 函数一起使用:

 #use rbind to bind together list of objects
do. call (" rbind ", data_list)

   team points
1: At 22
2:B27
3: C 38
4:D22
5:E14
6:F20
7:G 11
8:15 a.m.
9: I 18

此代码产生相同的结果,但事实证明rbindlist明显更快,特别是对于非常大的 data.table 或 data.frame 对象。

其他资源

以下教程解释了如何在 R 中执行其他常见操作:

如何在 R 中将表格转换为数据框
如何在 R 中向数据框添加行
如何在R中分割数据框

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注