【发布时间】:2016-09-06 02:13:03
【问题描述】:
我正在尝试识别事件的所有发生,如果按顺序重复则选择第一个事件。我可以标记和添加计数,但在事件发生变化后无法重置计数。
我的数据有大约 1M 行,有 30 个奇怪的 ID。我只添加了一个 ID,但我的数据中有 30 个奇数 ID。该表具有 ID、日期时间和状态。
状态是可以有多个值的事件-A,B,C...我关心的事件是针对B的。
我要添加三列-
Occurrence_B - 事件标志是 B
Count_B - 计算 event=B 的连续发生次数,并在事件更改时重置
Include_B - 显示该特定事件是第一次出现还是继续出现的标志
我将对 Include_B='new' 的数据进行子集化,以选择序列中的第一个匹配项。
ID Date Status Occurrence_B Count_B Include_B
A 7/28/15 12:00 AM A 0 0 0
A 7/28/15 12:30 AM A 0 0 0
A 7/30/15 12:00 AM B 1 1 new
A 7/31/15 12:00 AM B 1 2 continued
A 7/31/15 11:00 AM B 1 3 continued
A 8/2/15 10:00 AM B 0 0 0
A 8/3/15 12:00 AM C 0 0 0
A 8/4/15 12:00 AM B 1 1 new
A 8/5/15 12:00 AM B 1 2 continued
A 8/6/15 12:00 AM A 1 0 continued
A 8/7/15 12:00 AM B 1 1 new
我的示例代码--
d1[, Occurrence_B:=Status %in% c('B')+0L]
d1[, Count_B := cumsum(Occurrence_B), by=.(ID,Status)]
问题是我不知道一旦事件发生变化如何重置 count_B。我正在尝试调查,但我是 data.table 的新手,因此非常感谢任何帮助。
如果您有任何问题,请告诉我。
SK
【问题讨论】:
标签: r data.table cumsum