数据表中的rollapply计算总和返回NAs

时间:2017-12-09 08:38:44

标签: r datatable zoo

我想在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。我也对其他解决方案持开放态度。

1 个答案:

答案 0 :(得分:0)

您可以使用document' ./bin/rdoc:20:inif代替elseifelse返回与ifelse(test, yes, no)形状相同的值,结果的模式可能取决于test的值。

test