2017-08-15 16 views
2

に2つのデータフレームをマージしながら、列に一致する値を合計する方法私は、rで2つのデータフレームを持っているR

ship_no bay_1 bay_2 bay_3 bay_5  bay_6 
ABC  0  10  15  20  30 
DEF  10  20  0  25  10 
ERT  0  10  0  10   0 


ship_no bay_1 bay_2 bay_7 bay_5  bay_6 
ABC  10  10  10  0   0 
DEF  10  10  0  15  10 
ERT  0  0  0  10  0 
キー列上の2つのデータフレームの上 ship_no

私の希望マージしながら、私は列値を追加したい

データフレームは

ship_no bay_1 bay_2 bay_3 bay_5  bay_6  bay_7 
    ABC  10  20  15  20  30  10 
    DEF  20  30  0  40  20  0 
    ERT  0  10  0  20  0   0 

とすることができます。

答えて

2

私たちは、他の列

library(data.table) 
rbindlist(list(df1, df2), fill = TRUE)[,lapply(.SD, sum, na.rm = TRUE) , ship_no] 
# ship_no bay_1 bay_2 bay_3 bay_5 bay_6 bay_7 
#1:  ABC 10 20 15 20 30 10 
#2:  DEF 20 30  0 40 20  0 
#3:  ERT  0 10  0 20  0  0 

sumを取得し、 'ship_no' でグループ化されたデータセットを、rbindするrbindlistを使用し、listでデータセットを配置することができます別のオプションは以下のようになりdplyr

library(dplyr) 
bind_rows(df1, df2) %>% 
      group_by(ship_no) %>% 
      summarise_all(funs(sum(., na.rm = TRUE))) 
# A tibble: 3 x 7 
# ship_no bay_1 bay_2 bay_3 bay_5 bay_6 bay_7 
# <chr> <int> <int> <int> <int> <int> <int> 
#1  ABC 10 20 15 20 30 10 
#2  DEF 20 30  0 40 20  0 
#3  ERT  0 10  0 20  0  0 
関連する問題