Covid 19 Acompanhamento

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


[Esteartigofoipublicadopelaprimeiravezem[Thisarticlewasfirstpublishedon R em kieranhealy.org, e gentilmente contribuiu para os R-blogueiros]. (Você pode relatar um problema sobre o conteúdo desta página aqui)


Deseja compartilhar seu conteúdo com R-blogueiros? clique aqui se você tiver um blog ou aqui se não tiver.

Obtenha sua Epidemiologia de Epidemiologistas

A pandemia do COVID-19 continua em fúria. Estou fortemente comprometido com o que deveria ser a visão incontroversa de que devemos ouvir as recomendações de instituições e indivíduos com forte experiência nas áreas relevantes de Saúde Pública, Epidemiologia, Controle de Doenças e Modelagem de Infecções. Eu também acho que a disponibilidade aberta de dados e a disponibilidade gratuita de métodos para analisar dados é geralmente uma coisa boa. A parte complicada é quando estes potencialmente entram em conflito. Por exemplo, em um período de crise, é razoável querer descobrir o que está acontecendo e informar-se o máximo possível sobre como os eventos estão se desenrolando. As pessoas que trabalham com dados de algum tipo naturalmente querem ver as tendências disponíveis. Mas talvez essas mesmas pessoas não saibam muito sobre como a doença funciona, ou como as informações são coletadas e processadas, ou o que provavelmente acontecerá em uma situação como a que estamos enfrentando. Nesses momentos, há um equilíbrio a ser encontrado entre o uso das ferramentas disponíveis para obter uma opinião informada e a imprudência em mexer nos dados quando você realmente não sabe o que está fazendo. Isso é especialmente importante quando, como é o caso agora, a resposta do Executivo à crise nos Estados Unidos (e em vários outros países) tem sido criminalmente irresponsável, a ponto de até fatos elementares sobre a propagação da doença nos últimos anos. alguns meses estão sendo distorcidos.

Falando por mim, definitivamente quero ver quais são as tendências e prefiro fazê-lo trabalhando diretamente com os dados que as agências oficiais e os relatórios confiáveis ​​produzem. Então, neste post, mostrarei como estou fazendo isso. Mas eu definitivamente não quer mexer publicamente além disso. Embora eu possa ocultar alguns modelos ou brincar com várias extrapolações de dados, estou muito consciente de que não estou em condições de fazer isso em uma capacidade profissional. Então, essa parte vou deixar de lado com firmeza. Já existem muitas pessoas bem qualificadas trabalhando publicamente para realmente analisar e modelar os dados, em vez de olhar descritivamente o que está acontecendo.

Vou mostrar como obter os dados para desenhar esse gráfico.

Mortes cumulativas com COVID-19

Mortes cumulativas com COVID-19

Observando os dados do COVID-19 dos Centros Europeus de Controle de Doenças

Todos os dias, o ECDC publica uma planilha de resumo das contagens globais de casos e mortes desde o início da epidemia. Esses são bons dados coletados por uma agência em toda a UE e é isso que eu tenho usado para acompanhar as tendências. Também existem outras fontes confiáveis, principalmente o Johns Hopkins Coronavirus Dashboard. Aqui está o que eu tenho feito para colocá-lo em R. Novamente, minha principal razão para compartilhar esse código é não para adicionar muito de qualquer coisa do lado público. É muito mais um exercício pedagógico. Se você deseja analisar esses dados, aqui está uma maneira de fazer isso. Ao longo do caminho, falarei sobre algumas das coisas necessárias para trabalhar com os dados de uma maneira razoavelmente limpa. Depois, acabarei desenhando a trama que todos traçam – mostrando tendências cumulativas por país em mortes, contadas em dias desde um nível limite de fatalidades.

Preparação

Primeiro, carregamos algumas bibliotecas para nos ajudar.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10


library(tidyverse)
library(lubridate)
library(here)
library(janitor)
library(socviz)
library(ggrepel)
library(paletteer)

Em seguida, configuramos as coisas escrevendo algumas funções que nos ajudarão a capturar e limpar os dados. Na realidade, é claro, essas funções foram escritas aos poucos e foram limpas e movidas para a frente do arquivo. Não me sentei e escrevi-as em cima da minha cabeça.

O primeiro vai pegar a planilha do ECDC e salvar o arquivo .xlsx arquivo para o nosso data/ pasta e crie uma mistura dos resultados.

 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


## Download today's excel file, saving it to data/ and reading it in
get_ecdc_data <- function(url = "https://www.ecdc.europa.eu/sites/default/files/documents/",
                          fname = "COVID-19-geographic-distribution-worldwide-", 
                          date = lubridate::today(), 
                          ext = "xlsx", 
                          dest = "data") {
  
  target <-  paste0(url, fname, date, ".", ext)
  message("target: ", target)

  destination <- fs::path(here::here("data"), paste0(fname, date), ext = ext)
  message("saving to: ", destination)
  
  tf <- tempfile(fileext = ext)
  curl::curl_download(target, tf)
  fs::file_copy(tf, destination)
  
  switch(ext, 
  xls = janitor::clean_names(readxl::read_xls(tf)),
  xlsx = janitor::clean_names(readxl::read_xlsx(tf))
  )
}                          

Pontos a serem observados: temos que usar curl_download() para obter o arquivo, porque read_xls não pode pegar diretamente um arquivo do Excel de um URL da maneira que, por exemplo, read_csv() pode por um .csv Arquivo. Então, criamos um identificador de arquivo temporário e usamos curl para baixar o arquivo de dados para ele. Em seguida, copiamos o arquivo para sua residência permanente em nossa data/ pasta, e lemos o arquivo de destino no R com o apropriado readxl função.

Leia Também  "pacote 'foo' não está disponível" - O que fazer quando R diz que não pode instalar um pacote

Como veremos em breve, os códigos de país contidos nos dados do ECDC não são muito padrão. Será útil a longo prazo para garantir que todos os países padronizem abreviações de duas e três letras. Alguns dos países do CEPCD geo_id variável estão faltando estes. Essa é uma situação muito comum na limpeza de dados, em que temos uma tabela grande com alguns dados que sabemos estar ausentes (por exemplo, um código de país), e sabemos com certeza em quais casos os dados estão ausentes, e temos uma pequena tabela de pesquisa que pode preencher os espaços em branco. A operação que precisaremos executar aqui é chamada de junção coalescente. Antes que eu soubesse que era assim, costumava fazer isso manualmente (mostrarei a seguir). Mas um pouco de pesquisa acabou revelando o nome apropriado para esta operação e também uma função muito útil, escrita por Edward Visel que faz exatamente o que eu quero:

 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


coalesce_join <- function(x, y, 
                          by = NULL, suffix = c(".x", ".y"), 
                          join = dplyr::full_join, ...) {
    joined <- join(x, y, by = by, suffix = suffix, ...)
    # names of desired output
    cols <- union(names(x), names(y))
    
    to_coalesce <- names(joined)[!names(joined) %in% cols]
    suffix_used <- suffix[ifelse(endsWith(to_coalesce, suffix[1]), 1, 2)]
    # remove suffixes and deduplicate
    to_coalesce <- unique(substr(
        to_coalesce, 
        1, 
        nchar(to_coalesce) - nchar(suffix_used)
    ))
    
    coalesced <- purrr::map_dfc(to_coalesce, ~dplyr::coalesce(
        joined[[paste0(.x, suffix[1])]], 
        joined[[paste0(.x, suffix[2])]]
    ))
    names(coalesced) <- to_coalesce
    
    dplyr::bind_cols(joined, coalesced)[cols]
}

Em seguida, configuramos alguns códigos de países usando as abreviações ISO2 e ISO3.

 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
49
50
51
52
53
54
55
56
57
58
59
60
61
62


iso3_cnames <- read_csv("data/countries_iso3.csv")
iso2_to_iso3 <- read_csv("data/iso2_to_iso3.csv")

cname_table <- left_join(iso3_cnames, iso2_to_iso3)

cname_table

# A tibble: 249 x 3
   iso3  cname               iso2 
   <chr> <chr>               <chr>
 1 AFG   Afghanistan         AF   
 2 ALA   Åland Islands       AX   
 3 ALB   Albania             AL   
 4 DZA   Algeria             DZ   
 5 ASM   American Samoa      AS   
 6 AND   Andorra             AD   
 7 AGO   Angola              AO   
 8 AIA   Anguilla            AI   
 9 ATA   Antarctica          AQ   
10 ATG   Antigua and Barbuda AG   
# … with 239 more rows
eu <- c("AUT", "BEL", "BGR", "HRV", "CYP", "CZE", "DNK", "EST", "FIN", "FRA",
        "DEU", "GRC", "HUN", "IRL", "ITA", "LVA", "LTU", "LUX", "MLT", "NLD",
        "POL", "PRT", "ROU", "SVK", "SVN", "ESP", "SWE", "GBR")

europe <- c("ALB", "AND", "AUT", "BLR", "BEL", "BIH", "BGR", "HRV", "CYP", "CZE",
        "DNK", "EST", "FRO", "FIN", "FRA", "DEU", "GIB", "GRC", "HUN", "ISL",
        "IRL", "ITA", "LVA", "LIE", "LTU", "LUX", "MKD", "MLT", "MDA", "MCO",
        "NLD", "NOR", "POL", "PRT", "ROU", "RUS", "SMR", "SRB", "SVK", "SVN",
        "ESP", "SWE", "CHE", "UKR", "GBR", "VAT", "RSB", "IMN", "MNE")

north_america <- c("AIA", "ATG", "ABW", "BHS", "BRB", "BLZ", "BMU", "VGB", "CAN", "CYM",
        "CRI", "CUB", "CUW", "DMA", "DOM", "SLV", "GRL", "GRD", "GLP", "GTM",
        "HTI", "HND", "JAM", "MTQ", "MEX", "SPM", "MSR", "ANT", "KNA", "NIC",
        "PAN", "PRI", "KNA", "LCA", "SPM", "VCT", "TTO", "TCA", "VIR", "USA",
        "SXM")

south_america <- c("ARG", "BOL", "BRA", "CHL", "COL", "ECU", "FLK", "GUF", "GUY", "PRY",
                   "PER", "SUR", "URY", "VEN")


africa <- c("DZA", "AGO", "SHN", "BEN", "BWA", "BFA", "BDI", "CMR", "CPV", "CAF",
        "TCD", "COM", "COG", "DJI", "EGY", "GNQ", "ERI", "ETH", "GAB", "GMB",
        "GHA", "GNB", "GIN", "CIV", "KEN", "LSO", "LBR", "LBY", "MDG", "MWI",
        "MLI", "MRT", "MUS", "MYT", "MAR", "MOZ", "NAM", "NER", "NGA", "STP",
        "REU", "RWA", "STP", "SEN", "SYC", "SLE", "SOM", "ZAF", "SHN", "SDN",
        "SWZ", "TZA", "TGO", "TUN", "UGA", "COD", "ZMB", "TZA", "ZWE", "SSD",
        "COD")

asia <- c("AFG", "ARM", "AZE", "BHR", "BGD", "BTN", "BRN", "KHM", "CHN", "CXR",
        "CCK", "IOT", "GEO", "HKG", "IND", "IDN", "IRN", "IRQ", "ISR", "JPN",
        "JOR", "KAZ", "PRK", "KOR", "KWT", "KGZ", "LAO", "LBN", "MAC", "MYS",
        "MDV", "MNG", "MMR", "NPL", "OMN", "PAK", "PHL", "QAT", "SAU", "SGP",
        "LKA", "SYR", "TWN", "TJK", "THA", "TUR", "TKM", "ARE", "UZB", "VNM",
        "YEM", "PSE")

oceania <- c("ASM", "AUS", "NZL", "COK", "FJI", "PYF", "GUM", "KIR", "MNP", "MHL",
        "FSM", "UMI", "NRU", "NCL", "NZL", "NIU", "NFK", "PLW", "PNG", "MNP",
        "SLB", "TKL", "TON", "TUV", "VUT", "UMI", "WLF", "WSM", "TLS")

Agora, na verdade, obtenha os dados

O próximo passo é ler os dados. O arquivo devemos ser chamado COVID-19-geographic-distribution-worldwide- com a data anexada e a extensão .xlsx. Mas, como se vê, há um erro de digitação no nome do arquivo. o distribution parte está incorreta disbtribution. Eu acho que ele deve ter sido introduzido no início do processo de coleta de dados e até agora – possivelmente por acidente, mas também para não quebrar mil scripts como esse – eles não estavam corrigindo o erro de digitação.

Leia Também  Package lconnect: métricas de conectividade e priorização de patches
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23


covid_raw <- get_ecdc_data(url = "https://www.ecdc.europa.eu/sites/default/files/documents/",
                           fname = "COVID-19-geographic-disbtribution-worldwide-",
                           ext = "xlsx")
covid_raw

# A tibble: 6,012 x 8
   date_rep              day month  year cases deaths countries_and_t<dttm>              <dbl> <dbl> <dbl> <dbl>  <dbl> <chr>           
 1 2020-03-21 00:00:00    21     3  2020     2       Afghanistan     
 2 2020-03-20 00:00:00    20     3  2020            Afghanistan     
 3 2020-03-19 00:00:00    19     3  2020            Afghanistan     
 4 2020-03-18 00:00:00    18     3  2020     1       Afghanistan     
 5 2020-03-17 00:00:00    17     3  2020     5       Afghanistan     
 6 2020-03-16 00:00:00    16     3  2020     6       Afghanistan     
 7 2020-03-15 00:00:00    15     3  2020     3       Afghanistan     
 8 2020-03-11 00:00:00    11     3  2020     3       Afghanistan     
 9 2020-03-08 00:00:00     8     3  2020     3       Afghanistan     
10 2020-03-02 00:00:00     2     3  2020            Afghanistan     
# … with 6,002 more rows, and 1 more variable: geo_id 


Esses são os nossos dados básicos. o get_ecdc_data() função usa file_copy() de fs biblioteca para mover o arquivo temporário para o data/ pasta. Ele não substituirá um arquivo se ele já encontrar um com esse nome. Portanto, se você coletar os dados mais de uma vez por dia, precisará decidir o que fazer com o arquivo que já baixou.

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br

o geo_id a coluna de código do país não está visível aqui. Vamos duplicá-lo (nomeando-o iso2) e junte-se à nossa tabela de códigos de países com duas e três letras. Tem um iso2 coluna também.

 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


covid <- covid_raw %>%
  mutate(date = lubridate::ymd(date_rep),
         iso2 = geo_id)

## merge in the iso country names
covid <- left_join(covid, cname_table)

covid

# A tibble: 6,012 x 12
   date_rep              day month  year cases deaths countries_and_t<dttm>              <dbl> <dbl> <dbl> <dbl>  <dbl> <chr>           
 1 2020-03-21 00:00:00    21     3  2020     2       Afghanistan     
 2 2020-03-20 00:00:00    20     3  2020            Afghanistan     
 3 2020-03-19 00:00:00    19     3  2020            Afghanistan     
 4 2020-03-18 00:00:00    18     3  2020     1       Afghanistan     
 5 2020-03-17 00:00:00    17     3  2020     5       Afghanistan     
 6 2020-03-16 00:00:00    16     3  2020     6       Afghanistan     
 7 2020-03-15 00:00:00    15     3  2020     3       Afghanistan     
 8 2020-03-11 00:00:00    11     3  2020     3       Afghanistan     
 9 2020-03-08 00:00:00     8     3  2020     3       Afghanistan     
10 2020-03-02 00:00:00     2     3  2020            Afghanistan     
# … with 6,002 more rows, and 5 more variables: geo_id ,
#   date , iso2 , iso3 , cname 

Neste ponto, podemos observar algumas coisas sobre o conjunto de dados. Por exemplo, nem tudo no conjunto de dados é um país. Este é um navio de cruzeiro:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13


## Looks like a missing data code
covid %>% 
  filter(cases == -9)

# A tibble: 1 x 12
  date_rep              day month  year cases deaths countries_and_t<dttm>              <dbl> <dbl> <dbl> <dbl>  <dbl> <chr>           
1 2020-03-10 00:00:00    10     3  2020    -9      1 Cases_on_an_int# … with 5 more variables: geo_id , date , iso2 ,
#   iso3 , cname 

Também podemos aprender, usando um anti_join() que nem todos os CEPCDs geo_id os códigos dos países correspondem aos códigos ISO:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17


anti_join(covid, cname_table) %>%
  select(geo_id, countries_and_territories, iso2, iso3, cname) %>%
  distinct()

# A tibble: 7 x 5
  geo_id   countries_and_territories               iso2    iso3  cname
  <chr>    <chr>                                   <chr>   <chr> <chr>
1 JPG11668 Cases_on_an_international_conveyance_JJPG116<NA>  <NA> 
2 PYF      French_Polynesia                        PYF     <NA>  <NA> 
3 EL       Greece                                  EL      <NA>  <NA> 
4 XK       Kosovo                                  XK      <NA>  <NA> 
5 NA       Namibia                                 NA      <NA>  <NA> 
6 AN       Netherlands_Antilles                    AN      <NA>  <NA> 
7 UK       United_Kingdom                          UK      <NA>  <NA> 

Vamos consertar isso. Criei um pequeno arquivo de faixa de pedestres que pode ser agregado aos valores ausentes. Em uma pequena ruga adicional, precisamos especificar o na argumento em read_csv explicitamente porque os códigos de países ausentes incluem a Namíbia, que possui um código de país ISO de “NA”! Isso é diferente do código de dados ausente NA mas read_csv() não saberá disso por padrão.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15


cname_xwalk <- read_csv("data/ecdc_to_iso2_xwalk.csv",
                        na = "")

cname_xwalk

# A tibble: 4 x 3
  geo_id iso3  cname         
  <chr>  <chr> <chr>         
1 UK     GBR   United Kingdom
2 EL     GRC   Greece        
3 NA     NAM   Namibia       
4 XK     XKV   Kosovo        

Eu costumava coalescer assim:

1
2
3
4
5
6
7
8


# covid %
#   left_join(cname_xwalk, by = "geo_id") %>% 
#   mutate(iso3 = coalesce(iso3.x, iso3.y),
#          cname = coalesce(cname.x, cname.y)) %>% 
#   select(-iso3.x, -iso3.y, cname.x, cname.y)

Na verdade eu usava fazer isso usando match() e alguns vetores de índice, como um animal. Mas agora eu posso usar a função útil de Edward Visel.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21


covid <- coalesce_join(covid, cname_xwalk, 
                       by = "geo_id", join = dplyr::left_join)

## Take a look again
anti_join(covid, cname_table) %>%
  select(geo_id, countries_and_territories, iso2, iso3, cname) %>%
  distinct()

# A tibble: 7 x 5
  geo_id   countries_and_territories         iso2    iso3  cname      
  <chr>    <chr>                             <chr>   <chr> <chr>      
1 JPG11668 Cases_on_an_international_conveyJPG116<NA>  <NA>       
2 PYF      French_Polynesia                  PYF     <NA>  <NA>       
3 EL       Greece                            EL      GRC   Greece     
4 XK       Kosovo                            XK      XKV   Kosovo     
5 NA       Namibia                           NA      NAM   Namibia    
6 AN       Netherlands_Antilles              AN      <NA>  <NA>       
7 UK       United_Kingdom                    UK      GBR   United Kin

Parece que alguns novos territórios foram adicionados ao arquivo ECDC desde que eu criei o arquivo da faixa de pedestres. Vou ter que atualizar isso em breve.

Leia Também  Funções de gravação para automatizar tarefas de plotagem repetitiva no ggplot2

Calcular e traçar a mortalidade cumulativa

Agora podemos realmente analisar os dados (na privacidade de nossa própria casa). Vamos desenhar o enredo que todos desenham, observando as contagens acumuladas. Eu acho que é melhor neste momento traçar mortes cumulativas do que casos relatados cumulativos, uma vez que há muita desigualdade nos relatórios de casos. A contagem de mortalidade não está livre disso, mas não é um problema. Adotaremos um limite arbitrário para o número de mortes, digamos dez, iniciaremos todos os países a partir de zero dias quando atingirem dez mortes e contaremos as mortes acumuladas desde aquele dia.

 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


cov_curve <- covid %>%
  select(date, cname, iso3, cases, deaths) %>%
  drop_na(iso3) %>%
  group_by(iso3) %>%
  arrange(date) %>%
  mutate(cu_cases = cumsum(cases), 
         cu_deaths = cumsum(deaths)) %>%
  filter(cu_deaths > 9) %>%
  mutate(days_elapsed = date - min(date),
         end_label = ifelse(date == max(date), cname, NA))

cov_curve

# A tibble: 245 x 9
# Groups:   iso3 [21]
   date       cname iso3  cases deaths cu_cases cu_deaths days_elapsed
   <date>     <chr> <chr> <dbl>  <dbl>    <dbl>     <dbl> <drtn>      
 1 2020-01-22 China CHN     140     11      526        17  days      
 2 2020-01-23 China CHN      97            623        17 1 days      
 3 2020-01-24 China CHN     259      9      882        26 2 days      
 4 2020-01-25 China CHN     441     15     1323        41 3 days      
 5 2020-01-26 China CHN     665     15     1988        56 4 days      
 6 2020-01-27 China CHN     787     25     2775        81 5 days      
 7 2020-01-28 China CHN    1753     25     4528       106 6 days      
 8 2020-01-29 China CHN    1466     26     5994       132 7 days      
 9 2020-01-30 China CHN    1740     38     7734       170 8 days      
10 2020-01-31 China CHN    1980     43     9714       213 9 days      
# … with 235 more rows, and 1 more variable: end_label 


Veja como no final criamos um end_label variável para uso no gráfico. Ele possui apenas valores para o dia mais recente no conjunto de dados (ou seja, o nome do país se date é max(date), de outra forma NA)

Agora vamos restringir nosso foco a alguns países e fazer o enredo.

 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


focus_cn <- c("CHN", "GBR", "USA", "IRN", "JPN",
              "KOR", "ITA", "FRA", "ESP")


cov_curve %>%
  filter(iso3 %in% focus_cn) %>% ## focus on just a few countries, defined above
  mutate(end_label = recode(end_label, `United States` = "USA",
                        `Iran, Islamic Republic of` = "Iran", 
                        `Korea, Republic of` = "South Korea", 
                        `United Kingdom` = "UK")) %>%
  ggplot(mapping = aes(x = days_elapsed, y = cu_deaths, 
         color = cname, label = end_label, 
         group = cname)) + 
  geom_line(size = 0.8) + 
  geom_text_repel(nudge_x = 1.1,
                  nudge_y = 0.1, 
                  segment.color = NA) + 
  guides(color = FALSE) + 
  scale_color_manual(values = prismatic::clr_darken(paletteer_d("ggsci::category20_d3"), 0.2)) +
  scale_y_continuous(labels = scales::comma_format(accuracy = 1), 
                     breaks = 2^seq(4, 11),
                     trans = "log2") + 
  labs(x = "Days Since 10th Confirmed Death", 
       y = "Cumulative Number of Deaths (log scale)", 
       title = "Cumulative Deaths from COVID-19, Selected Countries", 
       subtitle = paste("Data as of", format(max(cov_curve$date), "%A, %B %e, %Y")), 
       caption = "Kieran Healy @kjhealy / Data: ECDC") + 
    theme(plot.title = element_text(size = rel(2), face = "bold"),
          plot.subtitle = element_text(size = rel(1.5)),
          axis.text.y = element_text(size = rel(2)),
          axis.title.x = element_text(size = rel(1.5)),
          axis.title.y = element_text(size = rel(1.5)),
          axis.text.x = element_text(size = rel(2)),
          legend.text = element_text(size = rel(2))
          )

Novamente, alguns pequenos detalhes aprimoram o enredo. Fazemos uma rápida recodificação no end_label para encurtar alguns nomes de países e usar geom_text_repel() para colocar os rótulos no final da linha. Temos nossas quebras no eixo y com 2^seq(4, 11), que (à medida que os números aumentam) será mais fácil de estender do que digitar manualmente todos os números. Eu uso uma escala de log de base 2 pelas razões que o Dr. Drang dá aqui. É útil observar o tempo de duplicação, que a base 2 ajuda a ver, em vez de potências de dez. (Os gráficos não parecerão diferentes.) Finalmente, no lado temático, podemos marcar o título do gráfico com data, usando os códigos de formatação de data UNIX opacos, porém padrão, com paste("Data as of", format(max(cov_curve$date), "%A, %B %e, %Y")).

E aqui está a nossa figura.

Mortes cumulativas com COVID-19

Mortes cumulativas com COVID-19

O repositório GitHub para esta postagem também possui algum código para extrair dados dos EUA do COVID Tracking Project atualmente sendo executado por um grupo de voluntários.

var vglnk = {key: ‘949efb41171ac6ec1bf7f206d57e90b8’};

(função (d, t) {
var s = d.createElement
s.src = ‘//cdn.viglink.com/api/vglnk.js’;
var r = d.getElementsByTagName
} (documento, ‘script’));

Para Deixe um comentário para o autor, siga o link e comente no blog: R em kieranhealy.org.

R-bloggers.com oferece atualizações diárias por email sobre notícias e tutoriais do R sobre o aprendizado do R e muitos outros tópicos. Clique aqui se você deseja publicar ou encontrar um emprego em ciência da dados / R.


Deseja compartilhar seu conteúdo com R-blogueiros? clique aqui se você tiver um blog ou aqui se não tiver.



cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br