【发布时间】:2020-11-09 09:32:02
【问题描述】:
我有一个 data.table DT 有 3 列,Zeit、Spuer 和 Eingriff。
DT <- data.table(Zeit = c(1, 2, 3, 4, 5, 6, 7, 8, 9),
Spuer = c(45, 45, 32, 25, 30, 44, 34, 42, 44),
Eingriff = c(0, 0, 1, 0, 0, 0, 1, 0, 0))
我想知道Eingriff == 1 和Spuer < 30 的下三个值之一。如果它是 TRUE 则 Eingriff == 1 否则 Eingriff == 0。对于我的真实数据,我会检查Spuer 中接下来的 20 个或更多值是否小于 30,因此像lead(Spuer, 1)、lead(Spuer, 2) 等解决方案不是一个好的解决方案。
我已经尝试使用frollapply 和shift 实施解决方案,但无法实现。
最终结果应该是这样的:
res <- data.table(Zeit = c(1, 2, 3, 4, 5, 6, 7, 8, 9),
Spuer = c(45, 45, 32, 25, 30, 44, 34, 42, 44),
Eingriff = c(0, 0, 1, 0, 0, 0, 0, 0, 0))
【问题讨论】:
标签: r data.table compare rolling-computation