2017-05-30 62 views
-1
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,appleorange,其中后者的列是前者的一个子集。R:如何通过列名合并2个数据帧

> 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 

什么是合并,这样我就没有办法了指定特定的列名字呢?即我的实际数据集有几百个共同的列,所以我宁愿不把它们逐个输出。

+1

这看起来更像是你想追加数据帧而不是合并它们。你可以做bind_rows(苹果,橙) – svenhalvorson

回答

1

您可以使用它通过名称匹配列dplyr::bind_rowsNA填补缺失的字段,这里是文档:

当行结合,列通过名称匹配,任何价值观是 不比赛将充满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