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))