以下に示すように、列 A と B を持つデータフレームがあります。スライディング ウィンドウで列 B の値の平均を計算したいと思います。スライディング ウィンドウのサイズは一定ではなく、列 A に基づいて設定する必要があります。つまり、ウィンドウ サイズは列 A の値制限 200 に設定されています。以下の例では、ウィンドウ サイズを明確に説明しています。
A: 10 150 200 220 300 350 400 410 500
B: 0 0 0 1 0 1 1 1 0 mean
[0 0 0] 0
[0 0 1 0 1] 0.4
[0 1 0 1 1] 0.6
[1 0 1 1 1] 0.8
[0 1 1 1 0] 0.6
[1 1 1 0] 0.75
[1 1 0] 0.66
[1 0] 0.5
[0] 0
Output: 0 0.4 0.6 0.8 0.8 0.8 0.8 0.8 0.75
ここで、列 A の各行/座標について、座標を含むすべてのウィンドウが考慮され、列「出力」に示されている結果を与える最高平均値を保持する必要があります。
上記のように出力したいと思います。出力は次のようになります。
A B Output
10 0 0
150 0 0.4
200 0 0.6
220 1 0.8
300 0 0.8
350 1 0.8
400 1 0.8
410 1 0.8
500 0 0.75
Rのスライディングウィンドウに同様の質問があり、
rollapply(B, 2*k-1, function(x) max(rollmean(x, k)), partial = TRUE)
k をウィンドウ サイズとして解を返します。違いは、現在の質問では一定ではないウィンドウ サイズです。
誰かがRで解決策を提供できますか?