【发布时间】:2017-09-01 09:35:06
【问题描述】:
我有长格式的数据,如下所示:
ID<-c("A","A","B","B","C","C","D","D")
CW<-c(1,2,1,2,1,2,1,2)
Value<-c(1,1,3,3,NA,NA,6,6)
dt<-cbind(ID,CW,Value)
我想为dt$Value 计算cumsum(),结果应该是这样的:
cum<-c(1,1,4,4,NA,NA,10,10)
dt.cum<-cbind(dt,cum)
我将dt 格式化为数据表并尝试了类似:
dt[, cum := cumsum(ifelse(is.na(dt$Value), 0, dt$Value)) +dt$Value*0, by="CW"]
但是,这不起作用。
【问题讨论】:
-
您能否更准确地解释一下您如何在功能上定义您的
cum列?当CW=1 时,您是否只考虑值?我的意思是:“真正的” cumsum 将是c(1,2,4,7,(eventually NA), (eventually NA), 13, 19)你想要一个(不同的)cumsum每个CW值,NA 计数为 0?