R语言自定义3个月统计周期起始日期绘制伤害数据折线图
解决方法
你之前使用round_date()默认按照自然季度边界对齐分组,因此会将3月末、4月初的数据拆分到不同周期,要实现自定义起始点的3个月周期分组,可以用R基础的cut.Date()函数实现,具体步骤如下:
1. 依赖包加载
library(tidyverse) library(lubridate)
2. 自定义周期分组计算
# 定义3个月周期的基准起始日 base_date <- ymd("2019-03-25") # 生成周期断点:从基准日开始每3个月一个节点,覆盖所有数据的日期范围 max_date <- max(keep_long_format$Date) breaks <- seq.Date(from = base_date, to = max_date + months(3), by = "3 months") # 给每条数据匹配所属周期 keep_long_format <- keep_long_format %>% mutate( # 匹配所属周期的起始日期,right=FALSE设置左闭右开区间规则 Trimonthly_start = cut(Date, breaks = breaks, right = FALSE, labels = head(breaks, -1)), Trimonthly_start = as.Date(Trimonthly_start), # 可选:生成直观的周期范围文本,方便后续折线图标注 Trimonthly_label = paste0(Trimonthly_start, "至", Trimonthly_start + months(3) - days(1)) )
3. 分组聚合统计
Pivot.Trimonthly <- keep_long_format %>% group_by(Trimonthly_start, Trimonthly_label, Injury.Cause) %>% summarise(Trimonthly.sum = sum(n), .groups = "drop")
关键参数说明
right = FALSE:设置区间判断规则为左闭右开,即每个周期范围为[周期起始日, 周期起始日+3个月),刚好匹配你要求的首个周期2019-03-25至2019-06-24的范围- 自定义
breaks参数:完全按照你指定的起始点生成周期边界,不会出现默认自然季度拆分数据的问题
内容的提问来源于stack exchange,提问作者Ram6
相关产品推荐
相关产品推荐

