У меня есть фрейм данных с двумя столбцами даты (от и до).Я хотел бы создать последовательность года и квартала между двумя датами, а затем изменить форму, чтобы преобразовать их в длинный фрейм данных.
df <- structure(list(id = 1:4, from = structure(c(1L, 1L, 2L, 2L), .Label = c("2018-01-01", "2018-04-01"), class = "factor"), to = structure(c(2L, 1L, 4L, 3L), .Label = c("2018-02-01", "2018-04-01", "2018-07-01", "2018-10-01"), class = "factor")), class = "data.frame", row.names = c(NA, -4L))
> df
id from to
1 2018-01-01 2018-04-01
2 2018-01-01 2018-02-01
3 2018-04-01 2018-10-01
4 2018-04-01 2018-07-01
В приведенном выше примере идентификатор 1 находится в Q1 и Q2, тогда как идентификатор 2 -только в Q1.
Желаемый вывод:
#id Quarter
#1 Q1 2018
#1 Q2 2018
#2 Q1 2018
#3 Q2 2018
#3 Q3 2018
#3 Q4 2018
#4 Q2 2018
#4 Q3 2018
Я могу получить четверть последовательности, используя функцию seq:
dsq <- seq(ymd('2018-01-01'),ymd('2018-04-01'), by = 'quarters')
paste0("Q", lapply(dsq, quarter), " ", lapply(dsq, year))
, но я ищуспособ изменить мою таблицу, используя полученную последовательность.
Любая помощь приветствуется.