【发布时间】:2017-12-09 08:38:43
【问题描述】:
我想在 R 中计算滚动总和。我正在使用此代码创建数据表 TT:
TT <- data.table(ID=c(rep(100,9),rep(200,6)),date=seq(as.Date("1958-04-25"),as.Date("1958-05-9"),by="days"),
output=c(5,8,NA,6,7,8,NA,12,13,2,14,12,14,14,NA))
这里我尝试计算滚动和,但结果只有 NA,即使在第一种情况(ID)中,长度应该 > 7。
TT[,XX :=
ifelse(length(output) >= 7,
rollapply(output, 7, sum, na.rm = TRUE,align = "right",fill = NA_real_),
rep(NA_real_,length(output))),by=ID]
TT[,length(output),by=ID]
我想要做的是计算滚动总和,如果可能的话,每个 ID 的窗口为 7。如果每个 ID 不可能(即行数不够),我只想拥有 NA。我也愿意接受其他解决方案。
【问题讨论】:
-
zoo 的开发版本可以处理比
width=参数短的系列。install.packages("zoo", repos="http://R-Forge.R-project.org"); TT[, XX := rollapplyr(output, 7, sum, na.rm = TRUE, fill = NA_real_), by = ID] -
哦,太好了!谢谢提示