2017-04-25 43 views
1

我有兩個dataframes看起來像以下:如果第一列中的名稱與R中的兩個數據幀之間的匹配,如何求和第二列的值?

df1: 

Sample Digit 
AACF-01 6 
AACG-01 7 
AAKD-01 3 
AAIU-01 4 

df2: 

Sample Digit 
AACF-01 8 
AACJ-01 2 
AAKD-01 4 
AALO-01 5 

如果在第一列中的名稱的兩個數據幀之間的匹配在第二列的值相加。

結果應該如下所示:

Sample Digit 
AACF-01 14 
AACG-01  7 
AACJ-01  2 
AAKD-01  7 
AAIU-01  4 
AALO-01  5 

誰能告訴我如何做到這一點? 謝謝

回答

1

我們可以綁定數據集,通過 '樣本' 分組的行,得到sum

library(dplyr) 
bind_rows(df1, df2) %>% 
     group_by(Sample) %>% 
     summarise(Digit = sum(Digit)) 
# A tibble: 6 × 2 
# Sample Digit 
# <chr> <int> 
#1 AACF-01 14 
#2 AACG-01  7 
#3 AACJ-01  2 
#4 AAIU-01  4 
#5 AAKD-01  7 
#6 AALO-01  5 

或用data.table

library(data.table) 
rbindlist(list(df1, df2))[, .(Digit = sum(Digit)), .(Sample)] 
# Sample Digit 
#1: AACF-01 14 
#2: AACG-01  7 
#3: AAKD-01  7 
#4: AAIU-01  4 
#5: AACJ-01  2 
#6: AALO-01  5 

或者使用base R避免

aggregate(.~Sample, rbind(df1, df2), sum) 
# Sample Digit 
#1 AACF-01 14 
#2 AACG-01  7 
#3 AACJ-01  2 
#4 AAIU-01  4 
#5 AAKD-01  7 
#6 AALO-01  5 
相關問題