如何在R中为分组数据添加基于历史值累加的计算列?
解决方案:计算分组内历史value累加和
针对你的需求,我们可以通过dplyr的分组窗口函数快速实现,以下是两种可行方法:
方法一:累积和减去当前值
library(dplyr) pdata <- pdata %>% group_by(id) %>% mutate(OUTPUT = cumsum(value) - value) %>% ungroup()
原理:cumsum(value)会计算从组内第一行到当前行的value累积总和,减去当前行的value后,就得到了当前行之前所有行的value之和,完全匹配需求。
方法二:滞后累积和
library(dplyr) pdata <- pdata %>% group_by(id) %>% mutate(OUTPUT = lag(cumsum(value), default = 0)) %>% ungroup()
原理:先计算组内value的累积和,再用lag()将结果向后偏移一行,同时给第一行设置default=0(因为没有更早的记录),最终得到目标输出。
运行任意一种方法后,查看前10行数据,会和你给出的期望结果一致:
pdata %>% slice(1:10)
内容的提问来源于stack exchange,提问作者arash
相关产品推荐
相关产品推荐

