如何使用数据中当前行前后 2 行的值 table

How to use values 2 rows ahead or behind of current row in data table

我有一个使用以下代码生成的虚拟数据 table:

require("data.table")

x <- rnorm(12, 5)
dt <- data.table(x)

我的版本输出如下所示:

             x
    1: 3.164381
    2: 1.572102
    3: 1.971536
    4: 3.311098
    5: 2.474029
    6: 2.637425
    7: 4.287430
    8: 1.134069
    9: 1.483923
   10: 1.842834
   11: 2.089589
   12: 1.786483

我将如何创建一个 "y" 列,该列执行与 excel 等效的以下计算,但在 R 中使用数据 table?

= SUM(X(i) + X(i-1)) + MAX(X(i-2), X(i+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))