如何使用数据中当前行前后 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))
我有一个使用以下代码生成的虚拟数据 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))