我想对数据框中的某些行组合进行编号(按 ID 和时间排序)
tc <- textConnection('
id time end_yn number
abc 10 0 1
abc 11 0 2
abc 12 1 3
abc 13 0 1
def 10 0 1
def 15 1 2
def 16 0 1
def 17 0 2
def 18 1 3
')
test <- read.table(tc, header=TRUE)
目标是创建一个新列 (" journey_nr
"),根据其所属的旅程为每一行提供一个唯一编号。旅程被定义为每行的序列,id
直到end_yn == 1
,如果end_yn
从未变为 1,旅程也应该被编号(参见预期结果示例)。对于一个 ID ,只能end_yn == 0
在行集合的末尾有旅程(如 id 3 的第 4 行所示)。因此,要么没有end_yn == 1
发生该 ID,要么发生在end_yn == 0
-journey 之前(参见id == abc
示例)。
我知道如何使用data.table
包进行编号,但我不知道要组合哪些列才能获得预期的结果。我data.table
在 SO 上搜索了 -tag,但找不到类似的问题。
预期结果:
id time end_yn number journey_nr
abc 10 0 1 1
abc 11 0 2 1
abc 12 1 3 1
abc 13 0 1 2
def 10 0 1 3
def 15 1 2 3
def 16 0 1 4
def 17 0 2 4
def 18 1 3 4