Lubridate подводит итоги на нефиксированной «ежемесячной» основе

#r #lubridate

#r #lubridate

Вопрос:

У меня есть следующие данные:

 Customer <- c(1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5)
Invoice <- c(100:134)
Invoice.Date <- c('20200223','20200226','20200301','20200314','20200314','20200401','20200405','20200302','20200604','20201103','20201012','20200710','20200804','20200813','20200912','20201001','20201030','20201031','20201101','20201014','20200915','20200213','20200304','20201003','20200505','20200617','20200520','20201005','20200403','20200303','20200915','20201003','20201101','20201001','20200901')

invoices <- data.frame(Customer, Invoice, Invoice.Date)
 

Я знаю, как получить ежемесячный счет-фактуру как таковую

 invoices %>%
  group_by(month = floor_date(as.Date(as.character(Invoice.Date), "%Y%m%d"), "month")) %>%
  count(Customer, name = "monthly") %>%
  pivot_wider(names_from = month, values_from = monthly)
 

Однако я хотел бы получить подсчет на основе «предыдущего месячного периода» на основе последней даты выставления счета.

Таким образом, в последнем столбце должно быть 10/24 — 11/23, в предыдущем — 9/24 — 10/23 и т. Д. У меня есть несколько медленных идей, есть ли что-то более быстрое в lubridate или в другом месте?

Комментарии:

1. Можете ли вы показать ожидаемый результат

2. Почему периоды прерываются 24 числа месяца?