Проблема: Предположим, у меня есть объект data.table
ниже (ex), который я хочу объединить с объектом date_frame
, чтобы получить желаемый результат. Желаемый вывод должен быть в такой форме, чтобы состояния C_ отображались только один раз за CURRENT_DATE. Однако, если существует более одного состояния E для iid, то эти состояния E (с соответствующей датой начала) должны появляться несколько раз за CURRENT_DATE. Есть идеи, как это сделать? Большое спасибо !!
## Desired Output
iid state start CURRENT_DATE
1 E 2020-01-02 2020-03-31
1 C_1 2020-01-03 2020-03-31
1 C_2 2020-01-05 2020-03-31
1 E 2020-01-06 2020-03-31
1 E 2020-01-08 2020-03-31
2 E 2020-01-10 2020-03-31
1 E 2020-01-02 2020-04-01
....
Пример игрушки
library(data.table)
ex <- data.table(iid = c(1, 1, 1, 1, 1, 2),
state = c("E", "C_1", "C_2", "E", "E", "E"),
start = c("2020-01-02", "2020-01-03", "2020-01-05", "2020-01-06", "2020-01-08", "2020-01-10"))
s <- seq.Date(from = ex[, min(ymd(start))],
to = Sys.Date(),
"days")
date_frame <- CJ(CURRENT_DATE = s, iid = unique(ex$iid))
## not working
merge(ex, date_frame, all = TRUE, by = "iid")