每个组的列的累积值(R)

时间:2016-01-17 14:45:17

标签: r

我有一个如下所示的数据框:

> year<-c(2014,2014,2014,2015,2015,2015,2016,2016,2016)
> group<-c("A","B","C","A","B","C","A","B","C")
> n<-c(1,1,1,1,2,0,2,1,1)
> df<-data.frame(year=year,group=group,n=n)
> df

year group n
2014     A 1
2014     B 1
2014     C 1
2015     A 1
2015     B 2
2015     C 0
2016     A 2
2016     B 1
2016     C 1

我想创建一个列,其中包含每个组的累计值n,如下所示:

year group n  sum
2014     A 1  1
2014     B 1  1
2014     C 1  1
2015     A 1  2
2015     B 2  3
2015     C 0  1
2016     A 2  4
2016     B 1  4
2016     C 1  2

1 个答案:

答案 0 :(得分:1)

我们可以按功能使用其中一个。使用data.table,将'data.frame'转换为'data.table'(setDT(df1),按'分组',我们将:=分配为cumsum(n)作为“总和”专栏。

library(data.table)
setDT(df1)[, Sum:= cumsum(n),group]

或者使用base R,我们可以使用ave

执行此操作
 df1$Sum <- with(df1, ave(n, group, FUN=cumsum))