开卷题库
  • 试卷
  • 讨论区
  • IT 问答
  • 课程返现
  • 登录
  • 注册

合并了很多数据帧

可能的复制品:
同时合并列表中的多个数据帧

例子 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>

注意: 对于每个 data.frame,id都是唯一的

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。

  • r
  • dataframe
  • merge
154758 次浏览
小开
最佳答案

Put them into a list and use merge with Reduce

Reduce(function(x, y) merge(x, y, all=TRUE), list(df1, df2, df3))
#    id v1 v2 v3
# 1   1  1 NA NA
# 2  10  4 NA NA
# 3   2  3  4 NA
# 4  43  5 NA NA
# 5  73  2 NA NA
# 6  23 NA  2  1
# 7  57 NA  3 NA
# 8  62 NA  5  2
# 9   7 NA  1 NA
# 10 96 NA  6 NA

You can also use this more concise version:

Reduce(function(...) merge(..., all=TRUE), list(df1, df2, df3))

提交答案

使用前必读

意见 & 问题反馈

极客学习笔记

ICP 证:鄂ICP备15004824号-2

友情链接