R 按组计算累计总和(总和)

R 按组计算累计总和(总和),r,cumsum,R,Cumsum,带数据帧: df <- data.frame(id = rep(1:3, each = 5) , hour = rep(1:5, 3) , value = sample(1:15)) 我怎样才能有效地做到这一点?谢谢 df$csum使用库plyr df$csum <- ave(df$value, df$id, FUN=cumsum) library(plyr) ddply(df,.(id),transform,c

带数据帧:

df <- data.frame(id = rep(1:3, each = 5)
                 , hour = rep(1:5, 3)
                 , value = sample(1:15))

我怎样才能有效地做到这一点?谢谢

df$csum使用库
plyr

df$csum <- ave(df$value, df$id, FUN=cumsum)
library(plyr)
ddply(df,.(id),transform,csum=cumsum(value))

要添加到备选方案中,
data.table
的语法很好:

library(data.table)
DT <- data.table(df, key = "id")
DT[, csum := cumsum(value), by = key(DT)]
上述措施将:

  • 通过引用将
    data.frame
    转换为
    data.table
  • 计算按id分组的值的累积和,并通过引用进行分配
  • 打印整个操作的结果(最后一个
    []
“df”现在将是一个
数据。带有“csum”列的表

使用dplyr::

require(dplyr)
df %>% group_by(id) %>% mutate(csum = cumsum(value))

unique.default(x,nmax=nmax)中出错:unique()仅适用于向量我一直在忘记。。。需要命名有趣的参数。请注意,如果多列定义了每个唯一行,则可以添加额外的
id
变量。e、 例如,
df$csum@42-
plyr
于2013年被封存(六年前)。你应该推荐
dplyr
/tidyverse/
数据。表
@smci:你看了评论的日期了吗?你是不是建议我把所有的评论都翻过来更新一下?更不用说我其实并不喜欢
plyr
dplyr
。(我确实提到了
data.table
),所以我决定删除注释并在答案中添加有用的内容。嘿,我尝试了你的方法。不知何故,分组工作不正常。它对所有数据点进行求和,而不进行分组。有什么建议吗?有时候在这些情况下,开始一次新的r课程会有所帮助。在示例数据上尝试我的代码。只需更新,您可能有一个已加载
plyr
的包。显式引用
dplyr
也会修复它:``df%>%groupby(id)%%>%dplyr::mutate(csum=cumsum(value))```
library(data.table)
setDT(df)[, csum := cumsum(value), id][]
require(dplyr)
df %>% group_by(id) %>% mutate(csum = cumsum(value))