我正在尝试计算在R中按多个维度分组的滚动均值.我将通过以下方式在SQL中执行的操作:
AVG(value) OVER
(PARTITION BY dim1, dim2 ORDER BY date
RANGE BETWEEN 5 PRECEDING AND CURRENT ROW)
Run Code Online (Sandbox Code Playgroud)
如果我只选择几个维度,以下似乎可行:
s <- ave(df$value,
list(df$dim1, df$dim2),
FUN= function(x) rollapply(x, 5, mean, align='right'))
Run Code Online (Sandbox Code Playgroud)
但是当我选择完整的维度集时会出现以下错误:
Error: k <= n is not TRUE
Run Code Online (Sandbox Code Playgroud)
我跑的时候遇到同样的错误:
rollapply(c(1:2), 3, mean, align='right')
Run Code Online (Sandbox Code Playgroud)
所以我想问题是一些尺寸组合没有足够的值来计算平均值.
我怎么能克服它?我很好,因为这些组合有一个NA.任何帮助将非常感激..
roll_meanr默认情况下,RcppRoll包中将执行此操作:
library(RcppRoll)
> roll_meanr(c(1:2), 3)
# [1] NA NA
Run Code Online (Sandbox Code Playgroud)