我正在尝试计算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。任何帮助将不胜感激..
答案 0 :(得分:3)
roll_meanr
包中的 RcppRoll
会执行此操作:
library(RcppRoll)
> roll_meanr(c(1:2), 3)
# [1] NA NA
答案 1 :(得分:0)
rollapply(c(1:10), 3, mean, align='right', fill=NA)
应该可以做到这一点。
请注意rollapply(c(1:2), 3, mean, align='right', fill=NA)
仍然会返回错误,原因是@ robert-krzyzanowski