Допустим, у меня есть кадр данных, подобный приведенному ниже:
df <- data.frame(group = c("a", "a", "b"),
start = as.Date(c("2018-01-01", "2018-09-01", "2018-02-01")),
end = as.Date(c("2018-02-15", "2018-12-31", "2018-03-30")))
group start end
a 2018-01-01 2018-02-15
a 2018-09-01 2018-12-31
b 2018-02-01 2018-03-30
И я хотел бы получить следующий ожидаемый результат:
output <- data.frame(group = c("a", "a", "a", "a", "a", "a", "b", "b"),
start = as.Date(c("2018-01-01", "2018-02-01", "2018-09-01",
"2018-10-01", "2018-11-01", "2018-12-01",
"2018-02-01", "2018-03-01")),
end = as.Date(c("2018-01-31", "2018-02-15", "2018-09-30",
"2018-10-31", "2018-11-30", "2018-12-31",
"2018-02-28", "2018-03-30")))
group start end
a 2018-01-01 2018-01-31
a 2018-02-01 2018-02-15
a 2018-09-01 2018-09-30
a 2018-10-01 2018-10-31
a 2018-11-01 2018-11-30
a 2018-12-01 2018-12-31
b 2018-02-01 2018-02-28
b 2018-03-01 2018-03-30
Для каждого месяца в последовательности Iхотел бы получить отдельную строку, которая будет ограничена 1) начальной датой последовательности, если последняя>, чем начало месяца или начало месяца, и 2) конечной датой месяца, если последняя> конечная датапоследовательность или дата окончания последовательности.
Есть идеи, как это сделать?