5

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 を取得しても問題ありません。どんな助けでも大歓迎です..

4

2 に答える 2

3

roll_meanrRcppRollパッケージからは、デフォルトでこれを行います:

library(RcppRoll)
> roll_meanr(c(1:2), 3)
# [1] NA NA
于 2016-02-22T01:26:23.193 に答える