如何从上面的行中引用值?

时间:2019-03-27 14:13:53

标签: r data.table

我正在用r(使用data.tables)开发一种算法,我需要将其中一列的值与上一行的值进行比较。

我已经尝试过移动/超前/滞后列,但它并不像我想象的那样

input_csv[, newCol:= ifelse(input_csv[, Col] > shift(newCol, 1L, type="shift") + tolerance * shift(newCol, 1L, type="shift")), input_csv[, Col], shift(newCol, 1L, type="shift"))]

我想要实现的目标看起来像

Col         NewCol
116.1423    116.1423
116.1431    116.1423
116.1431    116.1423
116.1431    116.1423
123.0542    123.0542
123.0549    123.0542

input_csv <- structure(list(Col = c(116.1423, 116.1431, 116.1431, 116.1431, 
123.0542, 123.0549), NewCol = c(116.1423, 116.1423, 116.1423, 
116.1423, 123.0542, 123.0542)), class = "data.frame", row.names = c(NA, -6L))

if(例如,最后一行)123.0542>116.1423+116.1423*tolerancetolerance <- as.double(0.00001) 没有data.table,我已经用下面的代码解决了它:

output[i] <- ifelse((as.double(input_csv[i, "Col"]) > as.double(output[i - 1]) + tolerance * output[i - 1]),
                      input_csv[i, "Col"],
                      output[i - 1])
input_csv$newCol<- output```

0 个答案:

没有答案