Para o Dicas de R dessa semana, vamos ensinar a baixar os dados sobre número de casos e óbitos de COVID de duas fontes, o repositório covid19br, e os datasets da plataforma brasil.io. Para fazer o download dos dados, basta acessar os arquivos CSV disponíveis online. Note que, no caso do brasil.io, os dados estão comprimidos, logo iremos utiilizar o pacote vroom, que baixa e extrai automaticamente as tabelas.
1 2 3 4 5 | #não rodado #dados_covid19br <- read.csv("https://raw.githubusercontent.com/wcota/covid19br/master/cases-brazil-states.csv") |
Primeiramente, vamos analisar a trajetória do número de casos em território nacional. Como de costume, vamos utilizar a média móvel de 7 dias para suavizar os dados.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | library (tidyverse) library (RcppRoll) library (ggplot2) library (ggthemes) dados_covid %>% filter (place_type == "state" ) %>% group_by (date) %>% summarise (total= sum (new_confirmed)) %>% mutate (casos = roll_meanr (total, n=7)) %>% ggplot ( aes (x=date, y=casos)) + geom_line (size=1.05) + scale_x_date ( "" , breaks = "1 month" , minor_breaks = "2 weeks" , date_labels = "%b %y" ) + scale_y_continuous ( "Número de casos novos (em milhares)" , breaks = seq (0, 150000, 25000), labels = seq (0, 150, 25)) + labs (title=( 'Evolução do número de casos de COVID-19 em território nacional' )) + theme_bw () |
Além do número de casos, é interessante colocar em perspectiva o número de mortes causadas por COVID-19 em relação ao total de mortes do país. É claro que, além dos valores registrados, devemos ter em mente a existência de subidentificação do número de casos e óbitos, logo a proporção apresentada aqui deve ser considerada conservadora. Para fazermos a análise, vamos acessar os dados de óbitos registrados em cartórios por todo o país. Devido a limitações do dataset atualmente disponível no brasil.io, vamos restringir a visualização até 30/12/2020.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | dados_2020 <- dados_obitos %>% group_by (date) %>% summarise (deaths_covid = sum (new_deaths_covid19, na.rm = TRUE ), deaths_sars = sum (new_deaths_sars_2020, na.rm = TRUE ), deaths_others = sum (new_deaths_others_2020, na.rm = TRUE ), deaths_septicemia = sum (new_deaths_septicemia_2020, na.rm = TRUE ), deaths_pneumonia = sum (new_deaths_pneumonia_2020, na.rm = TRUE ), deaths_indeterminate = sum (new_deaths_indeterminate_2020, na.rm = TRUE ), deaths_respiratory = sum (new_deaths_respiratory_failure_2020, na.rm = TRUE ), deaths_total = sum (new_deaths_total_2020, na.rm = TRUE )) dados_2019 <- dados_obitos %>% group_by (date) %>% summarise (deaths_covid = 0, deaths_sars = sum (new_deaths_sars_2019, na.rm = TRUE ), deaths_others = sum (new_deaths_others_2019, na.rm = TRUE ), deaths_septicemia = sum (new_deaths_septicemia_2019, na.rm = TRUE ), deaths_pneumonia = sum (new_deaths_pneumonia_2019, na.rm = TRUE ), deaths_indeterminate = sum (new_deaths_indeterminate_2019, na.rm = TRUE ), deaths_respiratory = sum (new_deaths_respiratory_failure_2019, na.rm = TRUE ), deaths_total = sum (new_deaths_total_2019, na.rm = TRUE )) agregado <- rbind (dados_2019, dados_2020) %>% mutate (date = seq (from = as.Date ( "2019-01-01" ), to = as.Date ( "2021-01-01" ), by = 'day' )) agregado %>% select (-deaths_total) %>% mutate ( across (-date, function (x) roll_meanr (x, n=7))) %>% pivot_longer (-date, names_to = "variavel" , values_to = "valor" ) %>% ggplot ( aes (x=date, y=valor, fill = variavel))+ geom_col (position = "fill" ) + scale_y_continuous (labels = scales::percent)+ scale_fill_manual (values = c ( "#2b1a6e" , "#22bfbb" , "#33e8e2" , "#6492e8" , "#86bfb6" , "#4b3a70" , "#609fc4" ), labels = c ( "Mortes por COVID-19" , "Mortes de causa indeterminada" , "Mortes por outras causas" , "Mortes de pneumonia" , "Mortes por problemas respiratórios" , "Mortes de SRAG" , "Mortes de sepse" )) + scale_x_date (date_breaks = "3 months" , date_labels = "%b %y" ) + labs (title = "Distribuição dos óbitos diários entre 2019 e 2020 por causa de morte" , caption = "Fonte: Análise Macro com dados do brasil.io" ) + theme (axis.title.x = element_blank (), axis.title.y = element_blank (), panel.grid.major = element_blank (), panel.grid.minor = element_blank (), panel.background = element_blank (), plot.caption = element_text (hjust = 2, face= "italic" ), axis.text.y = element_text (margin = margin (t = 0, r = -15, b = 0, l = 0)), axis.ticks.y = element_blank () ) |