从当前值滚动过去和未来的平均值

Rolling past and future averages from current value

我想我大部分时间都在那里,但我想不出如何正确编码的剩余部分。

我从一列 15 个值开始。我想创建两个新列,其中 'previous' 包含前两个值的平均值,'future' 创建后两个值的平均值。

我的代码失败了,因为它包含了当前行的值。
例如,第 3 行或“30”的 'previous' 值应为 15 ((10+20/2)),未来值为 45 ((40+50)/2)。相反,它返回 25 和 35,因为它在计算平均值时将 30 包括在 20 或 40 中。

我也对如何只显示以前的值感到困惑。

有人介意告诉我如何避免我遇到的这个问题吗?

我正在使用过滤器,但我不知道是否有更好的方法..

         values=data.frame(col=c(10,20,30,40,50,60,70,80,90,100,110,120,130,140,150))
        values$previous2 = filter(values$col, rep(1/2,2),sides=1)
        values$future2 = filter(values$col, rep(1/2,2),sides=2)
        values$last = #should be the previous value - ex 2nd row should be 10
        values 

要返回最后一个值,请尝试:

values$last = c(NA,values[-nrow(values),1])
我相信

或者 lag 函数也可以使用。