2016-12-09 26 views
0

我想根据A列中的数字对B列中的数字求和。 例如:R在不同列中的条件和

柱A:2001 2002 2002 2002 2003 2003

B栏:1 2 3 4 5 6

我要添加基于A.凝聚了B中的列C我期望的结果是:

柱A:2001 2002 2002 2002 2003 2003

B栏:1米2 3 4 5 6

C栏:1 9(2+ 3 + 4)9 9 11 11

我已经做了很多搜索,但真的不知道从哪里开始,在此先感谢您的帮助!

+0

到目前为止,您有尝试过什么吗? –

回答

0

我们可以从base R

df1$C <- with(df1, ave(B, A, FUN = sum)) 

由 'A'

library(dplyr) 
df1 %>% 
    group_by(A) %>% 
    mutate(C= sum(B)) 

或用ave分组后使用mutatedplyr一个有效的选项是data.table

library(data.table) 
setDT(df1)[, C := sum(B), by = A] 
+0

我可以再问你一个问题吗?如果有两个标准,我需要首先基于A添加列C,然后基于D,我尝试了库(dplyr) df1%>%group_by(A),group_by(D)%>%mutate(C =总和(B)),并且我把group_by(D)放到了很多地方,但没有成功。 – Amy

+0

@Amy两个标准,是指两列?如果是这种情况'df1%>%group_by(A,someothercolumn)%>%mutate(C = sum(B))' – akrun

+0

@Amy谢谢您的评论。你也可以勾选[here](http://stackoverflow.com/help/someone-answers) – akrun