是否可以将R中的多个数据帧合并为一个数据,其中所有列的键都相同

时间:2018-10-18 17:13:46

标签: r merge data.table

我一直试图将多个data.table合并到一个数据表中。 所有数据表都具有相同的键。

s1.dt,s2.dt和s3.dt是具有公用列o和d的三个数据表。

目前,我正在对三个数据表分别执行此操作,但是在整个数据集中,总共有100个这样的数据表。 所以我想知道是否有R函数可以这样做以避免繁琐的重复代码?

这是我的代码:

s1.dt= data.table(s1, key = c("o","d"))

s2.dt= data.table(s2, key = c("o","d"))

s3.dt= data.table(s3, key = c("o","d"))

system.time(s12.dt<-merge(s1.dt,s2.dt,all = T, allow.cartesian = T ))

system.time(s123.dt<-merge(s12.dt,s3.dt,all = T, allow.cartesian = T ))

1 个答案:

答案 0 :(得分:1)

我们将数据集保存在list中,并使用Reducemerge全部

Reduce(function(...) merge(..., all = TRUE, allow.cartesian = TRUE), 
                  list(s1.dt, s2.dt, s3.dt))

如果有许多数据集,则无需输入对象名称来创建列表,而应将pastelsmget一起使用

mget(ls(pattern = "^s\\d+\\.dt$"))