I would to filter to some records to retain the records where there was an outcome==1 but drop subsequent records where there was no outcome. e.g. for id s001 I would like to keep records for 2020-04-23 and 2020-05-18 but drop the subsequent ones. Same to s002 drop records after 2020-09-30.
library(dplyr)
set.seed(2022)
dat1 <- tibble(
surv_date = seq.Date(as.Date("2020-04-03"), as.Date("2021-01-01"), by = 5),
outcome = rbinom(55, 1, 0.3),
id = paste0("s00", rbinom(55, 10, 0.3))
)
first_dat <- dat1 %>%
arrange(id, surv_date) %>%
group_by(id, outcome) %>%
mutate(occurance = row_number()) %>%
filter(occurance == 1 & outcome == 1 )
second_dat <- dat1 %>%
arrange(id, surv_date) %>%
group_by(id, outcome) %>%
mutate(occurance = row_number()) %>%
filter( outcome == 0 )
first_dat %>%
bind_rows(second_dat) %>%
arrange(id, surv_date)