R 如何使用数据表中当前行前后两行的值

R 如何使用数据表中当前行前后两行的值,r,data.table,R,Data.table,我使用以下代码生成了一个虚拟数据表: require("data.table") x <- rnorm(12, 5) dt <- data.table(x) 如何创建一个y列,该列从excel中执行以下等效计算,但在R中使用数据表 =SUMXi+Xi-1+MAXXi-2,Xi+1 导致: x y 3.164381 NA 1.572102 NA 1.971536 5.282634 3.311098

我使用以下代码生成了一个虚拟数据表:

require("data.table")

x <- rnorm(12, 5)
dt <- data.table(x)
如何创建一个y列,该列从excel中执行以下等效计算,但在R中使用数据表

=SUMXi+Xi-1+MAXXi-2,Xi+1

导致:

       x            y
3.164381       NA
1.572102       NA
1.971536       5.282634
3.311098       5.785127
2.474029       5.111454
2.637425       6.924855
4.28743        6.761459
1.134069       3.771494
1.483923       5.771353
1.842834       3.932423
2.089589       3.876072
1.786483       3.629317

谢谢

我想你可以试试这个:

library(dplyr)
dt$x + lag(dt$x) + apply(cbind((lag(dt$x, 2)), lead(dt$x)), 1, max)
以下是一个解决方案:

 dt$y = pmax(c(NA,NA, head(x,-2)), c(tail(x, -1),NA)) + x + c(NA, head(x,-1))

这个总和是不必要的,你已经在总和了。我的电脑上没有,但是在data的devel版本中。表1.9.5有一个新的移位函数,它可能适合你正在做的事情。在最后一行,y的结果不应该是NA,因为您正在寻找xi+1,它不存在?
 dt$y = pmax(c(NA,NA, head(x,-2)), c(tail(x, -1),NA)) + x + c(NA, head(x,-1))