使用两个数据源计算每个州每百万人口的计数

Calculating count per 1 Million population of each state using two data source

我正在处理包含事件实例(如道路交通事故、枪支暴力)的数据集,并在列中提供有关事件的详细信息。

我想计算每个州每百万人口的事件数量,因为我有每个州的重要人口数据。

我将状态更改作为因素并计算了每个状态的事件数:

countbystate <- data1 %>% 
  group_by(state) %>% 
  summarise(count=n())

但是,我无法生成每 100 万人口比率的对象。 我尝试按状态加入两个数据状态,希望计算世界正常工作,但我运气不佳。

我相信这对于长期使用 R 的人来说可能非常简单,但我很难计算可视化所需的这个速率指标。

提前致谢。

上面的代码将计算状态的数量,这不是您想要的。要根据另一个因素计算某个实例,您还必须对该实例进行分组。

像这样的东西应该可以工作:

countbystate <- data1 %>% 
  group_by(state, road_accident) %>% 
  summarise(count=n())

要回答这个问题,需要合并 U.S 的来源。州级人口数据,数据框包含州数据事件。幸运的是,美国纳税人已经通过 U.S 的资助支付了收集这些信息的费用。人口普查局。

我们将使用 2019 U.S。人口估计来自 U.S。 state level population estimates from 2010 - 2019, merge them with yesterday's COVID-19 stats courtesy of our friends at the Johns Hopkins University Center for Systems Science and Engineering 数据集中包含的人口普查局,并计算每百万人口的确诊病例和死亡率。

首先,我们下载并加载美国人口数据,如下所示。

popData <- "https://www2.census.gov/programs-surveys/popest/tables/2010-2019/state/totals/nst-est2019-01.xlsx"

download.file(popData,
              "./data/nst-est2019-01.xlsx",mode="wb")

接下来我们加载人口数据,分配列名并保留 2019 年 7 月的估计值。我们跳过前几行数据,它们是总数 U.S 的摘要行。和各州的聚合区域,以及包含波多黎各数据的最后一行。

library(readxl)
colNames <- c("state","census2010","est_base",paste0("est_",2010:2019))
usPopEst <- read_excel("./data/nst-est2019-01.xlsx",
                       range="A10:M60",
                       col_names = colNames)[c(1,13)]
usPopEst$state <- gsub("\.","",usPopEst$state)

现在,我们从我的 JHU CCSE COVID-19 Github 存储库的分叉版本中读取了截至 2020 年 6 月 20 日的 COVID-19 数据。

# read covid-19 data for June 20th
covidFile <- "https://raw.githubusercontent.com/lgreski/COVID-19/master/csse_covid_19_data/csse_covid_19_daily_reports/06-20-2020.csv"
covidData <- read.csv(covidFile,
                      header=TRUE)

由于 COVID-19 数据处于县/邮政编码级别,我们需要汇总到州级别。然后我们会将其与人口估计值合并并计算每百万人口的发病率。

# aggregate stats to state level
library(dplyr)
covidData %>% filter(Country_Region == "US") %>%
     rename(state = Province_State) %>%
     group_by(state) %>% 
     summarise(Confirmed = sum(Confirmed),
               Deaths = sum(Deaths)) %>% 
     inner_join(.,usPopEst) %>%
     mutate(confirmed_per_million = Confirmed / (est_2019 / 1000000),
            death_per_million = Deaths / (est_2019 / 1000000)) -> summedStates

head(summedStates)

...输出:

> head(summedStates)
# A tibble: 6 x 6
  state      Confirmed Deaths est_2019 confirmed_per_million death_per_million
  <chr>          <int>  <int>    <dbl>                 <dbl>             <dbl>
1 Alabama        29549    838  4903185                 6026.             171. 
2 Alaska           741     12   731545                 1013.              16.4
3 Arizona        50127   1346  7278717                 6887.             185. 
4 Arkansas       15142    224  3017804                 5018.              74.2
5 California    175213   5494 39512223                 4434.             139. 
6 Colorado       30333   1647  5758736                 5267.             286. 
>