У меня есть df, который выглядит так
ID FINAL_DT START_DT
23 NA 2020-03-20
25 NA 2020-04-10
29 2020-02-02 2020-01-23
30 NA 2020-01-02
Я бы хотел, чтобы для каждого идентификатора добавлялась строка для каждого месяца, начиная с START_DT и заканчивая тем, что наступит первым, FINAL_DT или текущая дата . Ожидаемый результат будет следующим:
ID FINAL_DT START_DT ACTIVE_MONTH
23 NA 2020-03-20 2020-03
23 NA NA 2020-04
23 NA NA 2020-05
25 NA 2020-04-10 2020-04
25 NA NA 2020-05
29 2020-02-02 2020-01-23 2020-01
29 2020-02-02 NA 2020-02
30 NA 2020-01-02 2020-01
30 NA NA 2020-02
30 NA NA 2020-03
30 NA NA 2020-04
30 NA NA 2020-05
У меня есть следующий код, который работает, но не учитывает FINAL_DT
current_date = as.Date(Sys.Date())
enroll <- enroll %>%
group_by(ID) %>%
complete(START_DATE = seq(START_DATE, current_date, by = "month"))
Я пробовал следующее, но получил сообщение об ошибке, которое, как мне кажется, связано в АН:
current_date = as.Date(Sys.Date())
enroll <- enroll %>%
group_by(ID) %>%
complete(START_DATE = seq(START_DATE, min(FINAL_DT,current_date), by = "month"))
День месяца также не имеет значения, я не уверен, что было бы легче отказаться от этого до или после.