我正在尝试在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作为结果。任何帮助都将不胜感激。
c(1:2)
只有两个! - Robert Krzyzanowski