library(ggplot2)
#> Warning: package 'ggplot2' was built under R version 3.6.3
library(lubridate)
#> Warning: package 'lubridate' was built under R version 3.6.3
#>
#> Attaching package: 'lubridate'
#> The following object is masked from 'package:fabletools':
#>
#> interval
#> The following objects are masked from 'package:base':
#>
#> date, intersect, setdiff, union
library(tidyr)
granular <- tibble::tibble(
interval = ordered(c("hour", "day", "week", "fortnight", "month"), levels = c("hour", "day", "week", "fortnight", "month")),
times = list(
seq(ymd_hms("1970-01-01 00:00:00"), ymd_hms("1970-03-01 00:00:00"), by = "1 hour"),
seq(ymd_hms("1970-01-01 00:00:00"), ymd_hms("1970-03-01 00:00:00"), by = "1 day"),
seq(ymd_hms("1970-01-01 00:00:00"), ymd_hms("1970-03-01 00:00:00"), by = "1 week"),
seq(ymd_hms("1970-01-01 00:00:00"), ymd_hms("1970-03-01 00:00:00"), by = "2 weeks"),
seq(ymd_hms("1970-01-01 00:00:00"), ymd_hms("1970-03-01 00:00:00"), by = "1 month")
)
) %>%
unnest(times)
granular %>%
ggplot(aes(x = times, y = interval)) +
geom_point()
Offset each aggregation period to end at the last observation. Incomplete aggregations should not be created To potentially reconcile aggregations which don’t nest exactly, also include lower levels of disaggregation