У меня есть данные анализа выживания, но, к сожалению, само событие не является смертью. (К счастью для людей из набора данных).
Это означает, что кто-то может оставаться в наборе данных дольше, чем их событие. Благодаря предыдущему вопросу StackExchange я выяснил, как создать столбец, который возвращает TRUE
для первого вхождения события.
Но теперь я хочу отбросить все будущие вхождения события, то есть я хочу провести правую цензуру.
Например, этот код
mtcars %>%
select(cyl, carb) %>%
group_by(cyl) %>%
mutate(first_4 = carb == 4 & !duplicated(carb == 4)) %>%
arrange(cyl)
дает мне
cyl carb first_4
1 4 1 FALSE
2 4 2 FALSE
3 4 2 FALSE
4 4 1 FALSE
5 4 2 FALSE
6 4 1 FALSE
7 4 1 FALSE
8 4 1 FALSE
9 4 2 FALSE
10 4 2 FALSE
11 4 2 FALSE
12 6 4 TRUE
13 6 4 FALSE
14 6 1 FALSE
15 6 1 FALSE
16 6 4 FALSE
17 6 4 FALSE
18 6 6 FALSE
19 8 2 FALSE
20 8 4 TRUE
21 8 3 FALSE
22 8 3 FALSE
23 8 3 FALSE
24 8 4 FALSE
25 8 4 FALSE
26 8 4 FALSE
27 8 2 FALSE
28 8 2 FALSE
29 8 4 FALSE
30 8 2 FALSE
31 8 4 FALSE
32 8 8 FALSE
Пока все хорошо. Однако я хотел бы сохранить все строки до TRUE и удалить все строки после него, для каждой группы, IFF TRUE
вообще появляется в этой группе. Итак, мой последний набор данных будет выглядеть так:
cyl carb first_4
1 4 1 FALSE
2 4 2 FALSE
3 4 2 FALSE
4 4 1 FALSE
5 4 2 FALSE
6 4 1 FALSE
7 4 1 FALSE
8 4 1 FALSE
9 4 2 FALSE
10 4 2 FALSE
11 4 2 FALSE
12 6 4 TRUE
13 8 2 FALSE
14 8 4 TRUE