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

R语言如何合并疫情暴发频次表与发病日期列并导出CSV文件

R语言疫情暴发统计解决方案

首先先修正你测试数据集的小问题:构造数据时混合了日期和字符串类型,会导致后续日期计算报错,先统一将发病日期转为日期格式:

library(dplyr)
# 构造数据集+统一日期格式
df <- data.frame(
  outbreak_name = c("A","A","A","A","B","B","C","C","C"), 
  onset = c("2021-1-11", "2021-2-2","2021-2-3","2021-3-3","2021-5-5","2021-7-5","2021-4-5","2021-2-3","2021-12-4")
)
df$onset <- as.Date(df$onset)

方法1:单次分组汇总直接生成所有指标(推荐)

不需要分开生成两个表再合并,分组后一次汇总所有需要的字段即可:

summary_final <- df %>%
  group_by(outbreak_name) %>%
  summarize(
    cases = n(), # 病例数
    first_onset = min(onset), # 首次发病日期
    last_onset = max(onset), # 末次发病日期
    duration = as.numeric(last_onset - first_onset) # 持续天数,转为数值格式方便后续处理
  )

方法2:合并你已生成的两个结果表

如果不想修改现有代码,可通过关联匹配合并两个表,注意summary_ob是用mutate生成的,每个暴发会有多行重复的统计值,需要先去重保留每个暴发一行记录:

# 先对summary_ob去重,再和频次表关联
summary_final <- summary_ob %>%
  distinct(outbreak_name, first_onset, last_onset, duration) %>%
  left_join(summary_freq, by = "outbreak_name") %>%
  # 把duration转为数值格式的天数
  mutate(duration = as.numeric(duration))

生成描述文本并导出CSV

如果需要你说的固定格式的描述列,可新增字段拼接文本,再导出为CSV:

# 新增描述列
summary_final <- summary_final %>%
  mutate(描述 = paste0("暴发", outbreak_name, "共", cases, "例病例,首次发病日期为", first_onset, "、末次为", last_onset, ",持续", duration, "天"))

# 导出CSV,设置UTF-8编码避免中文乱码,取消行号
write.csv(summary_final, "疫情暴发统计结果.csv", row.names = FALSE, fileEncoding = "UTF-8")

完整可运行代码

library(dplyr)
# 构造数据集
df <- data.frame(
  outbreak_name = c("A","A","A","A","B","B","C","C","C"), 
  onset = c("2021-1-11", "2021-2-2","2021-2-3","2021-3-3","2021-5-5","2021-7-5","2021-4-5","2021-2-3","2021-12-4")
)
df$onset <- as.Date(df$onset)

# 汇总统计
summary_final <- df %>%
  group_by(outbreak_name) %>%
  summarize(
    cases = n(),
    first_onset = min(onset),
    last_onset = max(onset),
    duration = as.numeric(last_onset - first_onset)
  ) %>%
  mutate(描述 = paste0("暴发", outbreak_name, "共", cases, "例病例,首次发病日期为", first_onset, "、末次为", last_onset, ",持续", duration, "天"))

# 导出CSV
write.csv(summary_final, "疫情暴发统计结果.csv", row.names = FALSE, fileEncoding = "UTF-8")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:27:03