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

如何在R中合并数据集并绘制各州人均新冠确诊、死亡病例统计图

问题解决指南

核心问题原因

  • 分组统计函数使用错误:group_by(state) 搭配 summarise() 时不应使用 ave() 函数,该函数会返回和原数据集行数一致的结果,导致每个州生成多条重复记录,是州名重复的核心诱因,且你未将统计结果赋值给变量,后续操作的还是原始的县级别数据集
  • 合并匹配键写反:left_join 的 by 参数逻辑写反,原本是新冠数据集的state列匹配人口数据集的state_territory列,你写的逻辑完全相反,无法正确匹配数据
  • 多余的行名转列操作:原始新冠数据集已经有state列,不需要使用rownames_to_column额外生成州名列,该操作会导致列名冲突、数据错乱

完整实现代码

首先加载所需依赖包:

library(tidyverse)
library(tibble)

第一步:读取数据集

# 读取新冠分郡县统计数据集
covid <- read_csv("https://raw.githubusercontent.com/nytimes/covid-19-data/master/rolling-averages/us-counties.csv")
# 读取2020年美国各州人口估算数据集
US_state_pop_2020_estimate <- read_delim("https://www.dropbox.com/s/3rbr3kjooiq8yqp/US_state_pop_2020_estimate.txt?dl=0", delim = "\t")

第二步:按州汇总新冠数据

如果需要计算累计总确诊/总死亡使用sum(),如果需要计算平均日增数据替换为mean()即可:

covid_state <- covid %>%
  group_by(state) %>%
  summarise(
    total_cases = sum(cases, na.rm = TRUE),
    total_deaths = sum(deaths, na.rm = TRUE),
    .groups = "drop" # 汇总完成后自动取消分组
  )

第三步:合并数据集并计算人均指标

此处按每万人为单位计算人均指标,数值可读性更强,可根据需求调整单位:

covid_with_pop <- covid_state %>%
  left_join(US_state_pop_2020_estimate, by = c("state" = "state_territory")) %>%
  mutate(
    cases_per_10k = total_cases / pop_2020 * 10000,
    deaths_per_10k = total_deaths / pop_2020 * 10000
  )

第四步:可视化示例(各州人均确诊数柱状图)

covid_with_pop %>%
  arrange(desc(cases_per_10k)) %>%
  mutate(state = fct_inorder(state)) %>%
  ggplot(aes(x = cases_per_10k, y = state)) +
  geom_bar(stat = "identity", fill = "#2a68b9") +
  labs(x = "每万人确诊数", y = "州名", title = "美国各州人均新冠确诊数统计") +
  theme_minimal()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:27:02