我有一个使用以下代码生成的虚拟数据表:
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
由于
答案 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))