R:如何将两个数据框相加(行数不同)

4

I have one dataframe (df1):

Type     CA     AR     Total
alpha    2      3        5
beta     1      5        6
gamma    6      2        8
delta    8      1        9

我有另一个数据帧(df2)

Type     CA     AR     Total
alpha    3      4        7
beta     2      6        8
delta    4      1        5

如何将上述两个数据框相加以得到以下输出:
Type     CA     AR     Total
alpha    5      7        12
beta     3      11       14
gamma    6      2        8
delta    12     2        14

如果我使用以下这行代码:

new_df = df1 + df2

I get the following error:

‘+’ only defined for equally-sized data frames

我该如何将这两个数据框相加,也许可以通过匹配“类型”列下的名称来实现?

提前感谢!!


df1[df1$Type %in% df2$Type, ] + df2[df2$Type %in% df1$Type, ] 已经完成了一半的工作。接下来考虑使用 rbind 函数。 - Hugh
2
你的列不匹配,这是个问题吗? - Hugh
假设您想将CA值添加到CA值(这似乎并不是您所需的输出,但我不确定这是否是一个错误),那么我对您的上一个问题所给出的答案可以用于不同行数的数据框。 - MrFlick
2个回答

1

(由于aggregate()按照分组列对输出进行排序,因此行略微有些顺序不同,但数据是正确的。)

df1 <- data.frame(Type=c('alpha','beta', 'gamma','delta'), CA=c(2,1,6,8), AR=c(3,5,2,1), Total=c(5,6,8,9) );
df2 <- data.frame(Type=c('alpha','beta','delta'), AR=c(3,2,4), CA=c(4,6,1), Total=c(7,8,5) );
aggregate(.~Type,rbind(df1,setNames(df2,names(df1))),sum);
##    Type CA AR Total
## 1 alpha  5  7    12
## 2  beta  3 11    14
## 3 delta 12  2    14
## 4 gamma  6  2     8

0

库(dplyr)

rbind(df1,df2)%>%group_by(Type)%>%summarise_each(funs(sum))

这不会产生OP所给出的输出。 - MrFlick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接