Я хочу пронумеровать определенные комбинации строк в кадре данных (который упорядочен по идентификатору и по времени)
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, поездка также должна быть пронумерована (см. пример ожидаемого результата). Возможно только end_yn == 0
поездок в конце набора строк для идентификатора (как показано в строке 4 для идентификатора 3). Таким образом, либо end_yn == 1
для этого идентификатора не произошло, либо это произошло до end_yn == 0
-путешествия (см. id == abc
в примере).
Я умею нумеровать с помощью пакета data.table
, но не знаю, какие столбцы объединить, чтобы получить ожидаемый результат. Я искал тег data.table
на SO, но не смог найти подобную проблему.
Ожидаемый результат:
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
number
. 06.11.2012