【发布时间】:2014-04-03 18:16:09
【问题描述】:
我正在尝试计算 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)只有两个!跨度> -
是的,我知道问题出在哪里,第二个例子只是为了说明它。问题是,如果要计算 rollapply 的元素很少而不是收到错误消息,我该如何克服它并获得 NA。