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

时间:2015-01-12 17:07:01

标签: r data.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

我如何创建一个&#34; y&#34;从excel执行以下计算等效的列,但在R中使用数据表?

= 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

由于

2 个答案:

答案 0 :(得分:2)

我想你可以试试这个:

library(dplyr)
dt$x + lag(dt$x) + apply(cbind((lag(dt$x, 2)), lead(dt$x)), 1, max)

答案 1 :(得分:2)

这是一个解决方案:

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