2017-05-30 85 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