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))