我正在尝试计算值的滚动平均值,该值由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')


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

我该如何克服?我对这些组合的结果不满意。任何帮助将非常感激..

最佳答案

roll_meanr软件包中的RcppRoll默认情况下将执行此操作:

library(RcppRoll)
> roll_meanr(c(1:2), 3)
# [1] NA NA

09-25 18:55