5

我正在尝试计算 R 中按多个维度分组的值的滚动平均值。我将在 SQL 中通过以下方式执行以下操作:

AVG(value) OVER 
   (PARTITION BY dim1, dim2 ORDER BY date 
       RANGE BETWEEN 5 PRECEDING AND CURRENT ROW)

如果我只选择几个维度,以下似乎可行:

s <- ave(df$value, 
     list(df$dim1, df$dim2), 
     FUN= function(x) rollapply(x, 5, mean, align='right'))

但是当我选择全套尺寸时会出现以下错误:

Error: k <= n is not TRUE 

运行时出现相同的错误:

rollapply(c(1:2), 3, mean, align='right')

所以我想问题是某些维度组合没有足够的值来计算平均值。

我怎么能克服它?对于这些组合,我对拥有 NA 感到满意。任何帮助将非常感激..

4

2 回答 2

3

roll_meanr默认情况下,从RcppRoll包中将执行此操作:

library(RcppRoll)
> roll_meanr(c(1:2), 3)
# [1] NA NA
于 2016-02-22T01:26:23.193 回答
0

rollapply(c(1:10), 3, mean, align='right', fill=NA)应该可以解决问题,前提是您的向量足够长以生成任何数据。

请注意,rollapply(c(1:2), 3, mean, align='right', fill=NA)由于@robert-krzyzanowski 所述的原因,仍然返回错误

于 2017-05-05T19:55:58.987 回答