我有一个数据帧(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
我收到以下错误:
‘+’ only defined for equally-sized data frames
如何添加两个数据帧,可能是通过匹配"类型"下的名称。列?
提前致谢!!
答案 0 :(得分: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
答案 1 :(得分:0)
库(dplyr)
rbind(df1,df2)%>%group_by(Type)%>%summarise_each(funs(sum))