【发布时间】:2019-04-30 14:11:54
【问题描述】:
试图在不同类型的合同中找到 cumsum。每个都有一个唯一的停止(即交货)日期,在该日期之前有几个月的预期交货时间。需要计算实际交货日期之前所有预期交货的累计。
由于某种原因,cumsum/rollsum 函数无法正常工作。我尝试过 DT 和 dplyr 版本,但都失败了。
这是我正在处理的问题的简化数据。
df <- data.frame(report_year = c(rep(2017,10), rep(2018,10)),
report_month = c(seq(1,5,1), seq(2,6,1), seq(3,7,1), seq(2,6,1)),
delivery_year = c(rep(2017,10), rep(2018,10)),
delivery_month = c(rep(5,5),rep(6,5), rep(7,5), rep(6,5)),
sum = c(rep(seq(100,500,100), 4)),
cumsum = c(rep(c(100,300,600,1000,1500),4)))
前 5 列是我目前拥有的。
我正在尝试获取最后一列(即 cumsum)
我可能做错了什么。任何帮助表示赞赏。
【问题讨论】:
-
library(data.table); setDT(df)[, cumsum2 := cumsum(sum), by = .(report_year, delivery_month)][] -
谢谢@markus。但是,此解决方案仅在仅限于给定年份时才有效。如果滞后跨越多年,它就不起作用
-
嘿,EDennnis,记得接受并回答,以便人们知道您的问题已得到解决。
-
@EsbenEickhardt 如果我想接受的答案在评论中,我该如何接受?我愿意接受 markus 的评论,这就是我支持它的原因
-
那么你不能,必须要求那个人发布它作为答案。