合并大量data.frames

合并大量data.frames 

例如data.frames:


 df1 = data.frame(id=c('1','73','2','10','43'),v1=c(1,2,3,4,5)) <br>

 df2 = data.frame(id=c('7','23','57','2','62','96'),v2=c(1,2,3,4,5,6)) <br>

 df3 = data.frame(id=c('23','62'),v3=c(1,2)) <br>

注意:id每个data.frame都是唯一的。我希望得到的矩阵看起来像


1      1 NA NA 

2      3  4 NA 

7      NA 1 NA 

10     4 NA NA 

23     NA 2  1 

43     5 NA NA 

57     NA 3 NA 

62     NA 5  2 

73     2 NA NA 

96     NA 6 NA

在这种情况下,我只显示3个数据集,我实际上至少有22个数据集,所以最后我想要一个nx(22 + 1)矩阵,其中n是所有22个数据集的id数。 


给定2个数据集,我需要ids在第一列中获取它们,第二列和第三列用值填充,如果没有值,则输入NA。


慕田峪9158850
浏览 518回答 2
2回答

小怪兽爱吃肉

把它们放入一个list,并使用merge与ReduceReduce(function(x, y) merge(x, y, all=TRUE), list(df1, df2, df3))#&nbsp; &nbsp; id v1 v2 v3# 1&nbsp; &nbsp;1&nbsp; 1 NA NA# 2&nbsp; 10&nbsp; 4 NA NA# 3&nbsp; &nbsp;2&nbsp; 3&nbsp; 4 NA# 4&nbsp; 43&nbsp; 5 NA NA# 5&nbsp; 73&nbsp; 2 NA NA# 6&nbsp; 23 NA&nbsp; 2&nbsp; 1# 7&nbsp; 57 NA&nbsp; 3 NA# 8&nbsp; 62 NA&nbsp; 5&nbsp; 2# 9&nbsp; &nbsp;7 NA&nbsp; 1 NA# 10 96 NA&nbsp; 6 NA您还可以使用这个更简洁的版本:Reduce(function(...) merge(..., all=TRUE), list(df1, df2, df3))

DIEA

为Reduce。对于这个简单的例子,这相当于merge(merge(df1, df2, by='id', all=T), df3, by='id', all=T)。很明显,可以使用一个循环,遍历数据框 - 但这正是Reduce它的作用。
打开App,查看更多内容
随时随地看视频慕课网APP