在R中循环合并数据集

时间:2016-04-15 14:05:23

标签: r for-loop memory merge

我有一个基本文件,如下所示:

ID  x1
1   5
2   20
3   14
4   8
5   20

我有1.000个单独的文件,每个文件都包含额外的变量。 2个例子是:

ID  x2
1   45
2   85
3   42
7   52
8   41


ID  x2
10  54
12  4
4   7
5   21

我想得到它:

ID  x1  x2
1   5   45
2   20  85
3   14  42
4   8   7
5   20  21

我只想在" mydata"中添加匹配的ID。我最初尝试将所有单独的文件合并为1个单个文件然后合并,但是大小太大。我也尝试合并循环,但这会不断添加新的变量。关于如何合并这个的任何建议?

2 个答案:

答案 0 :(得分:1)

根据您阅读解决方案的方式,您的数据会略有不同。

但是,您可以使用apply读取大量文件,并将它们分配给不同级别的列表。

files.list = list()
sapply(c(1:100), function(x){files.list[[x]] = read.csv(file = paste0("file_",x,".csv"))})

然后列表中的每个对象都是一个data.frame,您可以使用这个优秀的答案:

merged.data.frame = Reduce(function(...) merge(..., all=T), files.list)

https://stackoverflow.com/a/8097519/4604054

答案 1 :(得分:0)

这可能是什么?

m1 <- merge(baseTab, tab2, by = "ID")

# Loop through datasets start here
for (tabName in tabList) {
  m2 <- merge(baseTab, tabName, by = "ID")
  m1 <- rbind(m1, m2)
}
# and ends here