【发布时间】:2016-08-14 11:15:13
【问题描述】:
当条件为 TRUE 且其后有 N 行时,如何获取该行?如果 N 行中的任何一个中条件为 TRUE,则重新开始计数。也为每个组执行此操作。
dt = data.table(a = rep(c("a","b","c"), each = 5), b = 1:15)
dt[, condition := b%%4 == 0]
> dt
a b condition **desiredOutcome**
1: a 1 FALSE FALSE
2: a 2 FALSE FALSE
3: a 3 FALSE FALSE
4: a 4 TRUE TRUE
5: a 5 FALSE TRUE
6: b 6 FALSE FALSE
7: b 7 FALSE FALSE
8: b 8 TRUE TRUE
9: b 9 FALSE TRUE
10: b 10 FALSE TRUE
11: c 11 FALSE FALSE
12: c 12 TRUE TRUE
13: c 13 FALSE TRUE
14: c 14 FALSE TRUE
15: c 15 FALSE FALSE
desiredOutcome 基于N=2 并按列分组a。获得这个的最佳方法是什么?
【问题讨论】:
-
dt[, shift(condition, 0:N), by = a]几乎可以工作,但很难对 shift 的输出进行行求和
标签: r data.table