我想在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),长度应该是&gt; 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。我也对其他解决方案持开放态度。
答案 0 :(得分:0)
您可以使用document'
./bin/rdoc:20:in
和if
代替else
。 ifelse
返回与ifelse(test, yes, no)
形状相同的值,结果的模式可能取决于test
的值。
test