我有两个数据帧,如下所示:
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
任何人都可以告诉我该怎么做? 谢谢
答案 0 :(得分: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