Я пытаюсь создать новую переменную, представляющую время, прошедшее от «rare_event» до следующего «common_event», сгруппированного по «id».
Вот код:
df <- data.frame(id = c(rep("A",10), rep("B",10), rep("C",10)),
time = c(rep(seq(1:10),3)),
common_event = c(rep(0, 3), 1, rep(0, 3), 1, rep(0, 5), 1, rep(0, 5), 1, rep(0, 3), 1, rep(0, 2), 1, rep(0, 2), 1),
rare_event = c(rep(0, 5), 1, rep(0, 3), 1, rep(0, 6), 1, rep(0, 7), 1, 1, rep(0, 3), 1))
Я думал, что это будет проще, но есть некоторые проблемы:
- Не у каждого "id" будет "rare_event" == TRUE.
- У некоторого "id" будет более одного "rare_event" перед следующим "common_event", например строки 25, 26.
Я пытался использовать для l oop и отставания и отставания от dplyr, но я не добился успеха.
Вот желаемый результат:
desired <- data.frame(id = c(rep("A",10), rep("B",10), rep("C",10)),
time = c(rep(seq(1:10),3)),
common_event = c(rep(0, 3), 1, rep(0, 3), 1, rep(0, 5), 1, rep(0, 5), 1, rep(0, 3), 1, rep(0, 2), 1, rep(0, 2), 1),
rare_event = c(rep(0, 5), 1, rep(0, 3), 1, rep(0, 6), 1, rep(0, 7), 1, 1, rep(0, 3), 1),
interval = c(rep(0, 5), 2, rep(0, 10), 3, rep(0, 7), 2, 1, rep(0, 4)))
Есть идеи, как решить эту проблему?