rollapplyパッケージzooの関数を使用すると、次のことができます。
> require(zoo)
> TS <- zoo(c(4, 5, 7, 3, 9, 8))
> rollapply(TS, width = 3, by = 2, FUN = mean, align = "left")
1 3
5.333333 6.333333
3つの観測値が含まれていないため、最後の値は計算されません。たぶんこれはあなたの本当の問題に十分でしょうか?また、返されたオブジェクトにはnames、返されたベクトルのインデックスとして必要なインデックスがあることに注意してください。
あなたの例では、最後のウィンドウに観測されていない0があると仮定しています。で埋めNAて欠損情報を表し、mean欠損値を処理するように指示する方が便利または現実的です。この場合、最終的なウィンドウ値として(8 + 9)/ 2になります。
> TS <- zoo(c(4, 5, 7, 3, 9, 8, NA))
> rollapply(TS, width = 3, by = 2, FUN = mean, na.rm = TRUE, align = "left")
1 3 5
5.333333 6.333333 8.500000