You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言如何按州、年龄组分组计算病例7天累计发病率

按州、年龄组分组计算COVID病例7天发病率实现方法

数据集结构说明

当前使用的数据集包含德国各州、统计日期、不同年龄组的每日COVID新增病例数,样例结构如下:

州日期病例数年龄段
巴伐利亚01-01-2021114-29
巴伐利亚01-01-2021530-50
巴伐利亚02-01-2021914-29
巴伐利亚02-01-20211030-50
萨克森01-01-20211214-29
萨克森01-01-2021330-50
萨克森02-01-20211314-29
萨克森02-01-2021630-50

原有代码问题

原有参考代码仅按7天时间窗口做单一维度分组,未加入州、年龄组分隔逻辑,运行时会合并所有州、所有年龄组的病例数据统计,无法满足分维度计算需求:

library(dplyr)

df %>%
  group_by(group = cut(date_entered, '7 days')) %>%
  summarise(date_range = paste(min(date_entered), min(date_entered) + 6, sep = '-'), 
            sum_new = sum(new)) %>%
  select(-group)

修改后可直接运行的代码

首先需要将日期列转换为R标准Date格式,再将州、年龄段两个维度和7天时间窗口共同作为分组依据,即可实现分维度独立统计:

library(dplyr)

df %>%
  # 转换日期格式,匹配样例中日-月-年的格式
  mutate(日期 = as.Date(日期, format = "%d-%m-%Y")) %>%
  # 三个分组维度:州、年龄段、7天统计窗口
  group_by(`州`, `年龄段`, time_window = cut(日期, breaks = "7 days")) %>%
  summarise(
    统计周期 = paste(min(日期), min(日期) + 6, sep = " 至 "),
    7天累计病例数 = sum(`病例数`, na.rm = TRUE),
    .groups = "drop" # 统计完成后取消分组,避免后续操作出错
  ) %>%
  select(-time_window)

补充说明

  • 分组时将州、年龄段放在时间窗口变量前,会对每个州的每个年龄组独立划分7天统计窗口,不会出现跨州、跨年龄组合并数据的问题
  • 如果需要计算标准的每10万人口7天发病率,只需提前在数据集中加入对应州、对应年龄组的人口基数字段,在summarise步骤新增发病率计算逻辑即可:7天发病率 = 7天累计病例数 / 对应人口数 * 100000
  • 如果需要对齐法定传染病报告的周统计规则(比如从周一开始算一周起始),可以在cut函数中加入start.on.monday = TRUE参数调整窗口起始点

内容的提问来源于stack exchange,提问作者Aleksandar Markovski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 04:42:36