如何在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 中执行其他常见操作: