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

如何使用dplyr将不同取值的多行按分组求和合并为单行数据

dplyr实现病例数据按规则汇总方案

核心逻辑

你需要的汇总可以通过「提取strain前缀→分组求和」两步完成,通用适配多年龄层、多性别的大数据量场景。

完整实现代码

首先加载依赖包:

library(dplyr)
library(stringr)

你可以先运行以下代码构造示例数据测试效果,实际使用时替换为自己的数据集即可:

# 构造示例数据
df <- tibble(
  country = c("mex", "mex", "mex", "mex", "usa", "usa", "usa", "usa"),
  year = c(1996,1996,1998,1998,1996,1996,1997,1997),
  strain = c("sp_m014", "sp_f014", "sp_m014", "sp_f014", "sp_m014", "sp_f014", "sp_m014", "sp_f014"),
  num_cases = c(412,214,150,200,200,180,190,150)
)

核心处理代码:

result <- df %>%
  # 提取strain中下划线前的前缀作为新的strain值
  mutate(strain = str_extract(strain, "^[^_]+")) %>%
  # 按国家、年份、strain三个维度分组
  group_by(country, year, strain) %>%
  # 汇总病例数,.groups = "drop"参数会在汇总后自动取消分组,避免后续操作出现多余的分组提示
  summarise(num_cases = sum(num_cases), .groups = "drop")

代码说明

  • 如果你的数据中所有需要合并的strain前缀都固定为sp,也可以把mutate步骤替换为mutate(strain = "sp"),运行效率更高
  • 该方案会自动合并同一国家、同一年份下,所有strain前缀相同的不同性别、不同年龄层的病例数,完全匹配你要求的汇总规则
  • 运行得到的result就是你需要的预期结果表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 01:24:03