我想在某个时间窗口计算移动平均值,而不是在时间序列的开头生成NA.例如,如果我将时间窗口设置为3,则2个第一个观察将具有NA.我想要的是第一次观察的时间窗口为1,第二次观察的时间窗口为2,然后是所有剩余观察的时间窗口.
我目前的代码:
#example data
x <- c(3,9,2,8,4,6,5,8)
#moving average with time window of length 3
(ma3 <- filter(x,rep(1/3,3),sides=1))
Run Code Online (Sandbox Code Playgroud)
我看不到蛮力以外的其他方式:
使用rollapplyfrom zoo而不是filter:
c(x[1], mean(x[1:2]), rollapply(x, width=3, FUN=mean))
Run Code Online (Sandbox Code Playgroud)