【问题标题】:Cumulative values of a column for each group (R) [duplicate]每个组的列的累积值(R)[重复]
【发布时间】:2016-01-17 14:45:17
【问题描述】:

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

> 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

【问题讨论】:

  • transform(df, sum = ave(n, group, FUN = cumsum))

标签: r


【解决方案1】:

我们可以使用其中一个 group by 函数。使用data.table,将“data.frame”转换为“data.table”(setDT(df1),按“group”分组,我们将(:=cumsum(n) 分配为“Sum”列。

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

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

 df1$Sum <- with(df1, ave(n, group, FUN=cumsum))

【讨论】:

    猜你喜欢
    • 2012-04-19
    • 1970-01-01
    • 2015-12-10
    • 1970-01-01
    • 1970-01-01
    • 2013-02-20
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多