Я работаю над набором продольных данных с несколькими пациентами, которые наблюдались ежегодно. При каждом наблюдении (= каждой строке) мы отслеживали, присутствует ли определенное условие (порядковая переменная). Кроме того, для каждого наблюдения (эхо-строка) у меня есть столбец с относительной разницей во времени до t = 0.
Теперь я хочу переставить эти данные для анализа Каплана-Майера, то есть я для каждого пациента, я need (либо) - Первое появление, когда присутствует мое состояние (означает:> 0). В результате должна появиться строка с пациентом, временем наблюдения / относительным временем и кодом события «1». - Если конидитон никогда не соблюдался (означает: столбец остается 0), мне нужна строка с пациентом, временем ПОСЛЕДНЕГО наблюдения и кодом события «0».
Я работаю над этим какое-то время, но получил для этого довольно длинный код. Однако я считаю, что должен быть более красивый способ сделать это в R - поэтому я ценю любую идею:)
dta.kaplanmeier <- dta.fu.wo.pre %>%
group_by(Patient) %>%
select(Patient, Occurence, DaysAfterInclusion) %>%
# Create event (1) when Occurence > 0
mutate (event = if_else(Occurence > 0, 1, NULL)) %>%
# Create 0 if no event 1 reached
mutate (event = if_else(DaysAfterInclusion == max(DaysAfterInclusion, na.rm = T) & max(event, na.rm = T) < 1, 0, event))
dta.kaplanmeier.event0 <- dta.kaplanmeier %>%
filter (event == 0)
dta.kaplanmeier.event1 <- dta.kaplanmeier %>%
filter (event == 1) %>%
arrange(DaysAfterInclusion) %>%
slice(1)
dta.kaplanmeier <- rbind(dta.kaplanmeier.event0, dta.kaplanmeier.event1)