portfolio <- data.frame(
policy_id = rep(c("P001", "P002"), each = 3),
coverage = rep(c("Fire", "Liability"), each = 3),
period_start = as.Date(c(
"2024-01-01", "2024-02-01", "2024-04-01",
"2024-01-01", "2024-02-03", "2024-03-03"
)),
period_end = as.Date(c(
"2024-01-31", "2024-02-29", "2024-04-30",
"2024-01-31", "2024-03-02", "2024-03-31"
)),
earned_premium = c(100, 110, 120, 80, 90, 95)
)
# Reduce directly adjacent periods within each policy and coverage.
pt1 <- merge_date_ranges(
portfolio,
period_start = "period_start",
period_end = "period_end",
group_by = c("policy_id", "coverage")
)
summary(pt1, period = "months", policy_id, coverage)
# Bridge a short administrative gap and retain additive premium totals.
pt2 <- merge_date_ranges(
portfolio,
period_start = "period_start",
period_end = "period_end",
group_by = c("policy_id", "coverage"),
aggregate_cols = "earned_premium",
# Explicitly bridge administrative gaps of up to four uncovered days.
merge_gap_days = 5
)
summary(pt2, period = "months", policy_id, coverage)
Run the code above in your browser using DataLab