2017-09-10 13 views
2

関数がzooパッケージの後続変数(または別の累積型のローリング平均関数)を処理する方法を調整する方法があるのでしょうか。私はすべての後続の変数の平均値を取得するためにrollmeanfill = "extend"のようなものを使用することができます知っているrollmeanを使用して行の位置に基づいて末尾の変数を記入してください

df <- as.data.frame(as.matrix(sample(1:10), ncol = 3)) 
df$roll <- rollmean(df$V1, 5, fill = NA, align = "right") 
df 

    V1 roll 
1 2 NA 
2 7 NA 
3 6 NA 
4 1 NA 
5 9 5.0 
6 5 5.6 
7 10 6.2 
8 3 5.6 
9 4 6.2 
10 8 6.0 

が、それぞれのように、この拡張するアプローチを調整する方法があります:私は、次のdata.frameを持っていることを言います末尾の変数は行の位置に基づいて累積されますか?だから私が欲しいのは、dfのようなものです.の4行は4行のローリングウィンドウを持ち、3行は3行のローリングウィンドウを持ちます。

V1 roll 
1 2 NA 
2 7 4.5 
3 6 5.0 
4 1 4.0 
5 9 5.0 
6 5 5.6 
7 10 6.2 
8 3 5.6 
9 4 6.2 
10 8 6.0 

答えて

2

rollapply(およびデフォルトでは右揃えのrollapplyr)は、partial = TRUE引数をサポートしています。

V1 V2 roll 
1 1 2 2.0 
2 2 7 4.5 
3 3 6 5.0 
4 4 1 4.0 
5 5 9 5.0 
6 6 5 5.6 
7 7 10 6.2 
8 8 3 5.6 
9 9 4 6.2 
10 10 8 6.0 

注:を入力再現性の1を生産するためのコードがset.seed(...)を使用しなければならないようにするには?rollapply

transform(df, roll = rollapplyr(V2, 5, mean, partial = TRUE)) 

を与えてください。 `元の質問で

df <- structure(list(V1 = 1:10, V2 = c(2L, 7L, 6L, 1L, 9L, 5L, 10L, 
3L, 4L, 8L)), .Names = c("V1", "V2"), row.names = c(NA, -10L), class = "data.frame") 
+0

申し訳ありませんが、私が使用しているべきではありません'サンプル()が、これは私が探していたまさにです:それは行われていないので、我々はこれを使用しました!本当にありがとう。 –

+0

私の実際の目的のために、私は 'rollapplyr(V2、5、mean、partial = TRUE))'行を、私が作業している 'dplyr'チェーンに投げ込むことができました。 –

関連する問題