Расчет количества на 1 миллион населения каждого штата с использованием двух источников данных - PullRequest
0 голосов
/ 21 июня 2020

Я работаю с набором данных с экземплярами событий (например, дорожно-транспортное происшествие, насилие с применением огнестрельного оружия), с подробностями о событиях в столбце.

Я хочу рассчитать количество событий на миллион населения для каждого штата, для этого у меня есть важная популяция для данных состояния.

У меня есть состояние изменения как фактор и подсчитано количество событий для каждого состояния:

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

Однако я не могу сгенерировать объект с на 1 миллион населения. Я попытался объединить два состояния данных по состоянию, надеясь, что мир вычислений работает, но мне далеко не повезло.

Я уверен, что это может быть довольно просто для того, кто использует R с давних пор, но мне трудно вычислить эту скорость metri c, который мне нужен для визуализации.

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 21 июня 2020

Чтобы ответить на этот вопрос, необходимо объединить источник данных о населении на уровне штата США с фреймом данных, содержащим событие по данным штата. К счастью, налогоплательщики Соединенных Штатов заплатили за сбор этой информации за счет средств Бюро переписи населения США.

Мы будем использовать оценки численности населения США за 2019 год от Бюро переписей США, которые включены в набор данных оценки численности населения на уровне штата с 2010 по 2019 гг. на миллион населения.

Сначала мы загружаем данные о населении США, которые выглядят следующим образом.

введите описание изображения здесь

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 года. Мы пропускаем первые несколько строк данных, которые представляют собой сводные строки для всего США и агрегированных регионов штатов, а также последнюю строку, которая содержит данные для Пуэрто-Рико.

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)

Теперь мы читаем COVID -19 данных по состоянию на 20 июня 2020 г. из моей разветвленной версии репозитория JHU CCSE COVID-19 на Github.

# 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. 
> 
0 голосов
/ 21 июня 2020

Приведенный выше код подсчитает количество состояний, которое не соответствует вашему желанию. Чтобы подсчитать какой-либо экземпляр в соответствии с другим фактором, вы также должны сгруппировать этот экземпляр.

Должно работать что-то вроде этого:

countbystate <- data1 %>% 
  group_by(state, road_accident) %>% 
  summarise(count=n())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...