我认为我大部分都在那里,但我无法弄清楚如何正确编码的剩余部分。
我从一个包含15个值的列开始。我想用以前的'创建两个新列。包含前两个值的平均值,以及' future'创建接下来两个值的平均值。
我的代码失败了,因为它包含了当前行的值 例如,row3或' 30'应该有一个以前的'值为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
答案 0 :(得分:1)
要返回最后一个值,请尝试:
values$last = c(NA,values[-nrow(values),1])
我相信也可以使用或lag
函数。