按行在R中使用不等的维度合并数据帧

时间:2015-09-11 19:19:50

标签: r dataframe

假设我有以下数据框:

a<-data.frame(A=3,B=9,C=10,D=6)
print(a)
  A B  C D
1 3 9 10 6
b<-data.frame(A=1,B=2,D=5)
print(b)
  A B D
1 1 2 5

我试图按行将它们绑定在一起,以便相应的列名排列,并且在相应值缺失的地方产生NA,以便最终结果为:

  print(c)
  A B C  D
1 3 9 6  10
2 1 2 NA 5

我尝试了以下内容:

rbind(a,b)
merge(a,b,byrow=TRUE)

但是没有工作,有什么建议吗?谢谢!

2 个答案:

答案 0 :(得分:3)

我们可以使用rbindlist中的data.table。我们将data.frames保留在list中,并使用带有rbindlist选项的fill=TRUE为数据集中的缺失列生成NA。

library(data.table)
rbindlist(list(a,b), fill=TRUE)
#   A B  C D
#1: 3 9 10 6
#2: 1 2 NA 5

另一个选项是来自bind_rows的{​​{1}},这是dplyr的有效实现,可以将多个数据帧绑定在一起。

do.call(rbind, ...)

答案 1 :(得分:2)

您可以使用dplyr中实现的联接。

full_join(a,b)

   Joining by: c("A", "B", "D")
     A B  C D
   1 3 9 10 6
   2 1 2 NA 5