【发布时间】:2016-06-18 08:30:35
【问题描述】:
我正在使用 for 循环将多个文件与另一个文件合并:
文件
for(i in 1:length(files))
{
data <- fread(files[i], header=T)
# Merge
mydata <- merge(mydata, data, by="ID", all.x=TRUE)
rm(data)
}
“mydata”如下所示(简化):
ID x1 x2
1 2 8
2 5 5
3 4 4
4 6 5
5 5 8
“数据”如下所示(大约 600 个文件,总共 100GB)。 2 个(单独的)文件的示例。将 all in 1 集成是不可能的(太大):
ID x3
1 8
2 4
ID x3
3 4
4 5
5 1
当我运行我的代码时,我得到以下数据集:
ID x1 x2 x3.x x3.y
1 2 8 8 NA
2 5 5 4 NA
3 4 4 NA 4
4 6 5 NA 5
5 5 8 NA 1
我想得到的是:
ID x1 x2 x3
1 2 8 8
2 5 5 4
3 4 4 4
4 6 5 5
5 5 8 1
ID 是唯一的(从不重复超过 600 个文件)。
任何关于如何尽可能有效地实现这一目标的想法都非常感谢。
【问题讨论】:
-
您是否尝试将所有文本文件合并为单个文本文件?如果 ID 是唯一的,为什么不使用
rbind或cbind来加入它们而不是合并? -
我不认为有一个函数可以按照您想要的方式为您的数据结构“合并”。我们可能不得不写一个。您的
data文件不一定总是只包含“x3”列,对吧? -
数据始终完全相同,1 列“ID”,1 列“x3”。我在单独的数据文件中只有比 mydata 更多的 ID