apple = data.frame(Obs = c(1:4), Color = c("red", "red", "red", "green"), Weight = c(1.1, 1.2, 1.3, 1.4))
orange = data.frame(Obs = c(1:6), Weight = c(2, 3, 4, 5, 6, 7))
我有两个data.frames,apple
和orange
,其中后者的列是前者的子集。
> apple
Obs Color Weight
1 1 red 1.1
2 2 red 1.2
3 3 red 1.3
4 4 green 1.4
> orange
Obs Weight
1 1 2
2 2 3
3 3 4
4 4 5
5 5 6
6 6 7
我想合并2个data.frames,结果看起来像这样:
> apple_orange
Obs Color Weight
1 1 red 1.1
2 2 red 1.2
3 3 red 1.3
4 4 green 1.4
5 1 NA 2
6 2 NA 3
7 3 NA 4
8 4 NA 5
9 5 NA 6
10 6 NA 7
合并这个是什么方式,以便我没有指定具体的列名?即我的实际数据集有几百个共同的列,所以我不想一个一个地输入它们。
答案 0 :(得分:4)
您可以使用dplyr::bind_rows
按名称匹配列,并使用NA
填充缺少的列,这是文档:
当行绑定时,列按名称匹配,以及任何值 不匹配将填充NA。
dplyr::bind_rows(apple, orange)
Obs Color Weight
1 1 red 1.1
2 2 red 1.2
3 3 red 1.3
4 4 green 1.4
5 1 <NA> 2.0
6 2 <NA> 3.0
7 3 <NA> 4.0
8 4 <NA> 5.0
9 5 <NA> 6.0
10 6 <NA> 7.0