data-raw/importa.R

# Bibliotecas - Tentar manter isso o mínimo possível... -------------------
library(tidyr)
library(dplyr)

# logical_cores <- parallel::detectCores(logical = TRUE)

cls <- function() cat("\f")


# Dados do Curso R --------------------------------------------------------
covid_R4DS2 <- readRDS("../CursoR4DS2/data/covid.rds") %>%
   # Filtrando só as linhas necessárias...
   filter(
      regiao != "Brasil",
      !is.na(municipio),
      !is.na(codmun)
   ) %>%
   # Calculando os dados faltantes...
   arrange(codmun, data) %>%
   mutate(
      em_acompanh_acumulados = ifelse(
         test = codmun != lag(codmun),
         yes = ifelse(
            test = is.na(emAcompanhamentoNovos),
            yes = 0,
            no = emAcompanhamentoNovos
         ),
         no = emAcompanhamentoNovos + lag(emAcompanhamentoNovos)
      ),
      recuperados_acumulados = ifelse(
         test = codmun != lag(codmun),
         yes = ifelse(
            test = is.na(Recuperadosnovos),
            yes = 0,
            no = Recuperadosnovos
         ),
         no = Recuperadosnovos + lag(Recuperadosnovos)
      )
   ) %>%
   # Organizando a bagunça dos nomes e reposicionando as colunas...
   select(
      date = data,
      semana_epidem = semanaEpi,
      regiao,
      estado,
      municipio,
      lat,
      lon,
      cod_uf = coduf,
      cod_mun = codmun,
      cod_regiao_saude = codRegiaoSaude,
      nome_regiao_saude = nomeRegiaoSaude,
      pop_tcu_2019 = populacaoTCU2019,
      eh_capital,
      em_acompanh_novos = emAcompanhamentoNovos,
      contagios_novos = casosNovos,
      obitos_novos = obitosNovos,
      recuperados_novos = Recuperadosnovos,
      em_acompanh_acumulados,
      contagios_acumulados = casosAcumulado,
      obitos_acumulados = obitosAcumulado,
      recuperados_acumulados,
      log2_obitos_novos = obitosNovos_log2,
      log2_obitos_acumulados = obitosAcumulado_log2
   ) %>%
   # Deixando a base (bem) mais leve...
   mutate(
      across(
         .cols = c(
            semana_epidem,
            cod_uf,
            cod_mun,
            cod_regiao_saude,
            pop_tcu_2019,
            em_acompanh_novos,
            contagios_novos,
            obitos_novos,
            recuperados_novos,
            em_acompanh_acumulados,
            contagios_acumulados,
            obitos_acumulados,
            recuperados_acumulados
         ),
         .fns = ~ as.integer(.x)
      )
   ) %>%
   # Deixando a base (um pouco) mais leve...
   mutate(
      across(
         .cols = c(
            regiao,
            estado,
            municipio,
            nome_regiao_saude
         ),
         .fns = ~ stringi::stri_trans_general(
            str = stringr::str_trim(.x),
            id = "Latin-ASCII"
         )
      )
   ) %>%
   # Deixando a base (um pouco) mais ajeitada...
   mutate(
      across(
         .cols = c(
            nome_regiao_saude
         ),
         .fns = ~ stringr::str_replace_all(
            string =
               stringr::str_replace_all(
                  string =
                     stringr::str_replace_all(
                        string =
                           stringr::str_to_title(
                              string = .x,
                              locale = "pt_BR"
                           ),
                        pattern = " Da ",
                        replacement = " da "
                     ),
                  pattern = " Do ",
                  replacement = " do "
               )
            ,
            pattern = " De ",
            replacement = " de "
         )
      )
   ) %>%
   # Ordenando para auxiliar no cruzamento dos dados...
   arrange(
      cod_mun,
      date,
      estado,
      municipio
   ) %>%
   # Garantindo que todos os nomes estejam arrumados...
   janitor::clean_names()

# Conferência rápida...
cls()

covid_R4DS2 %>%
   glimpse()

covid_R4DS2 %>%
   object.size()

covid_R4DS2 %>%
   select(
      date,
      semana_epidem,
      em_acompanh_novos,
      contagios_novos,
      obitos_novos,
      recuperados_novos,
      em_acompanh_acumulados,
      contagios_acumulados,
      obitos_acumulados,
      recuperados_acumulados,
      log2_obitos_novos,
      log2_obitos_acumulados
   ) %>%
   summary()

covid_R4DS2 %>%
   select(
      date,
      em_acompanh_novos,
      contagios_novos,
      obitos_novos,
      recuperados_novos
   ) %>%
   summarise(
      qtd_data = n_distinct(date),
      data_min = min(date, na.rm = TRUE),
      data_max = max(date, na.rm = TRUE),
      # soma_aco = sum(em_acompanh_novos, na.rm = TRUE),
      soma_con = sum(contagios_novos, na.rm = TRUE),
      soma_obi = sum(obitos_novos, na.rm = TRUE)
      # soma_rec = sum(recuperados_novos, na.rm = TRUE)
   )


# Dados do Brasil.io ------------------------------------------------------
datacovidbr::brasilio(silent = TRUE) %>%
   # Filtrando só as linhas necessárias...
   filter(
      place_type == "city",
      !is.na(city),
      !is.na(city_ibge_code)
   ) %>%
   # Calculando os dados faltantes...
   arrange(city_ibge_code, date) %>%
   mutate(
      contagios_novos = ifelse(
         test = city_ibge_code == lag(city_ibge_code),
         yes = confirmed - lag(confirmed),
         no = ifelse(
            test = is.na(confirmed),
            yes = 0,
            no = confirmed
         )
      ),
      obitos_novos = ifelse(
         test = city_ibge_code == lag(city_ibge_code),
         yes = deaths - lag(deaths),
         no = ifelse(
            test = is.na(deaths),
            yes = 0,
            no = deaths
         )
      )
   ) %>%
   # Organizando a bagunça dos nomes e reposicionando as colunas...
   select(
      date,
      estado = state,
      municipio = city,
      cod_ibge = city_ibge_code,
      pop_est_2019 = estimated_population_2019,
      contagios_novos,
      obitos_novos,
      contagios_acumulados = confirmed,
      obitos_acumulados = deaths
      # tipo_local = place_type,
      # ultimo_dado = is_last,
      # taxa_obitos = death_rate,
      # conf_por_100k_hab = confirmed_per_100k_inhabitants,
      # ordem_para_lugar = order_for_place
   ) %>%
   # Deixando a base (bem) mais leve...
   mutate(
      across(
         .cols = c(
            cod_ibge,
            pop_est_2019,
            contagios_novos,
            obitos_novos,
            contagios_acumulados,
            obitos_acumulados
         ),
         .fns = ~ as.integer(.x)
      )
   ) %>%
   # Deixando a base (um pouco) mais leve...
   mutate(
      across(
         .cols = c(
            estado,
            municipio
         ),
         .fns = ~ stringi::stri_trans_general(
            str = stringr::str_trim(.x),
            id = "Latin-ASCII"
         )
      )
   ) %>%
   # Ordenando para auxiliar no cruzamento dos dados...
   arrange(
      cod_ibge,
      date,
      estado,
      municipio
   ) %>%
   # Garantindo que todos os nomes estejam arrumados...
   janitor::clean_names() -> covid_brasilio

# Conferência rápida...
cls()

covid_brasilio %>%
   glimpse()

covid_brasilio %>%
   object.size()

covid_brasilio %>%
   select(
      date,
      pop_est_2019,
      contagios_novos,
      obitos_novos,
      contagios_acumulados,
      obitos_acumulados
   ) %>%
   summary()

covid_brasilio %>%
   select(
      date,
      contagios_novos,
      obitos_novos,
   ) %>%
   arrange(date) %>%
   summarise(
      data_min = min(date, na.rm = TRUE),
      data_max = max(date, na.rm = TRUE),
      data_dist = n_distinct(date),
      soma_cont = sum(contagios_novos, na.rm = TRUE),
      soma_obit = sum(obitos_novos, na.rm = TRUE)
   )


# Dados do Ministério da Saúde --------------------------------------------
tryCatch({
   datacovidbr::brMinisterioSaude(silent = TRUE) %>%
      separate(
         col = 1,
         into = c(
            'regiao',
            'estado',
            'municipio',
            'coduf',
            'codmun',
            'codRegiaoSaude',
            'nomeRegiaoSaude',
            'date',
            'semanaEpi',
            'populacaoTCU2019',
            'casosAcumulado',
            'casosNovos',
            'obitosAcumulado',
            'obitosNovos',
            'Recuperadosnovos',
            'emAcompanhamentoNovos',
            'interior/metropolitana'
         ),
         sep = ";",
         convert = TRUE) %>%
      # Cuidando da Compatibilidade...
      as_tibble() %>%
      # Filtrando só as linhas necessárias...
      filter(
         regiao != "Brasil",
         trimws(municipio) != "",
         !is.na(codmun)
      ) %>%
      # Organizando a bagunça dos nomes e reposicionando as colunas...
      select(
         date,
         semana_epidem = semanaEpi,
         regiao,
         estado,
         municipio,
         cod_uf = coduf,
         cod_mun = codmun,
         cod_regiao_saude = codRegiaoSaude,
         nome_regiao_saude = nomeRegiaoSaude,
         pop_tcu_2019 = populacaoTCU2019,
         # em_acompanh_novos = emAcompanhamentoNovos,
         contagios_novos = casosNovos,
         obitos_novos = obitosNovos,
         # recuperados_novos = Recuperadosnovos,
         contagios_acumulados = casosAcumulado,
         obitos_acumulados = obitosAcumulado,
         interior_metropol = `interior/metropolitana`
      ) %>%
      # Deixando a base (bem) mais leve...
      mutate(
         across(
            .cols = c(
               semana_epidem,
               cod_uf,
               cod_mun,
               cod_regiao_saude,
               pop_tcu_2019,
               contagios_novos,
               obitos_novos,
               contagios_acumulados,
               obitos_acumulados,
               interior_metropol
            ),
            .fns = ~ as.integer(.x)
         ),
         across(
            .cols = c(
               date
            ),
            .fns = ~ as.Date(.x)
         )
      ) %>%
      # Deixando a base (um pouco) mais leve...
      mutate(
         across(
            .cols = c(
               regiao,
               estado,
               municipio,
               nome_regiao_saude
            ),
            .fns = ~ stringi::stri_trans_general(
               str = stringr::str_trim(.x),
               id = "Latin-ASCII"
            )
         )
      ) %>%
      # Deixando a base (um pouco) mais ajeitada...
      mutate(
         across(
            .cols = c(
               nome_regiao_saude
            ),
            .fns = ~ stringr::str_replace_all(
               string =
                  stringr::str_replace_all(
                     string =
                        stringr::str_replace_all(
                           string =
                              stringr::str_to_title(
                                 string = .x,
                                 locale = "pt_BR"
                              ),
                           pattern = " Da ",
                           replacement = " da "
                        ),
                     pattern = " Do ",
                     replacement = " do "
                  )
               ,
               pattern = " De ",
               replacement = " de "
            )
         )
      ) %>%
      # Insistindo na Consistencia...
      filter(!is.na(date)) %>%
      # Ordenando para auxiliar no cruzamento dos dados...
      arrange(
         cod_mun,
         date,
         estado,
         municipio
      ) %>%
      # Garantindo que todos os nomes estejam arrumados...
      janitor::clean_names()
},
# warning = function(w) {
#    warning-handler-code
# },
error = function(e) {
   cls()
   cat("Encontrei um erro na função brMinisterioSaude, então lerei o arquivo de backup...\n\n")
   readRDS("data-raw/backup_covid_ministerio.rds")
},
finally = {
   cat("Pronto!\n\n")
}) -> covid_ministerio

# Rápida conferência...
cls()

covid_ministerio %>%
   glimpse()

covid_ministerio %>%
   object.size()

covid_ministerio %>%
   select(
      date,
      pop_tcu_2019,
      contagios_novos,
      obitos_novos,
      contagios_acumulados,
      obitos_acumulados
   ) %>%
   summary()

covid_ministerio %>%
   select(
      date,
      contagios_novos,
      obitos_novos,
   ) %>%
   arrange(date) %>%
   summarise(
      data_min = min(date, na.rm = TRUE),
      data_max = max(date, na.rm = TRUE),
      data_dist = n_distinct(date),
      soma_cont = sum(contagios_novos, na.rm = TRUE),
      soma_obit = sum(obitos_novos, na.rm = TRUE)
   )


# Conseguindo as Informações Geográficas dos Municípios Brasileiros -------

## Latitude, Longitude e Indicador de Capital...
readr::read_csv(
   file = "https://raw.githubusercontent.com/kelvins/Municipios-Brasileiros/main/csv/municipios.csv"
) %>%
   # Filtrando só as linhas necessárias...
   filter(
      !is.na(latitude),
      !is.na(longitude)
   ) %>%
   # Organizando a bagunça dos nomes e reposicionando as colunas...
   select(
      cod_ibge = codigo_ibge,
      # municipio = nome,
      lat = latitude,
      lon = longitude,
      # cod_uf = codigo_uf,
      capital
   ) %>%
   # Deixando a base (bem) mais leve...
   mutate(
      across(
         .cols = c(
            cod_ibge,
            capital
         ),
         .fns = ~ as.integer(.x)
      )
   ) %>%
   # Ordenando para auxiliar no cruzamento dos dados...
   arrange(
      cod_ibge
   ) %>%
   distinct(
      cod_ibge,
      lat,
      lon,
      capital
   ) %>%
   arrange(
      cod_ibge
   ) %>%
   # Garantindo que todos os nomes estejam arrumados...
   janitor::clean_names() -> coords_munic

# Rápida conferência...
cls()

coords_munic %>%
   glimpse()

coords_munic %>%
   object.size()

coords_munic %>%
   select(capital) %>%
   sum()


## Área dos Municípios...
readr::read_delim(
   file = "data-raw/Dados_Area_Municipios.txt",
   delim = "\t",
   col_names = TRUE,
   trim_ws = TRUE,
   guess_max = 5700,
   skip_empty_rows = TRUE
) %>%
   # Filtrando só as linhas necessárias...
   filter(
      !is.na(AR_MUN_2019)
   ) %>%
   # Organizando a bagunça dos nomes e reposicionando as colunas...
   select(
      cod_ibge = CD_GCMUN,
      area_mun_km2 = AR_MUN_2019
   ) %>%
   # Deixando a base (bem) mais leve...
   mutate(
      across(
         .cols = c(
            cod_ibge
         ),
         .fns = ~ as.integer(.x)
      )
   ) %>%
   # Ordenando para auxiliar no cruzamento dos dados...
   arrange(
      cod_ibge
   ) %>%
   distinct(
      cod_ibge,
      area_mun_km2
   ) %>%
   arrange(
      cod_ibge
   ) %>%
   # Garantindo que todos os nomes estejam arrumados...
   janitor::clean_names() -> area_munic

# Rápida conferência...
cls()

area_munic %>%
   glimpse()

area_munic %>%
   object.size()

area_munic %>%
   summary()

area_munic %>%
   select(area_mun_km2) %>%
   sum() %>%
   scales::comma(
      accuracy = 0.01,
      big.mark = ".",
      decimal.mark = ","
   )


## Combinando todas as Informações Geográficas...
coords_munic %>%
   full_join(
      y = area_munic,
      by = "cod_ibge"
   ) %>%
   mutate(
      capital = as.integer(
         ifelse(test = !is.na(capital),
                yes = capital,
                no = 0)
      )
   ) %>%
   select(
      cod_ibge,
      lat,
      lon,
      area_mun_km2,
      capital
   ) %>%
   arrange(cod_ibge) %>%
   distinct(
      cod_ibge,
      lat,
      lon,
      area_mun_km2,
      capital
   ) %>%
   arrange(cod_ibge) -> infos_geograficas

# Rápida conferência...
cls()

infos_geograficas %>%
   glimpse()

infos_geograficas %>%
   object.size()

infos_geograficas %>%
   summary()

infos_geograficas %>%
   select(capital) %>%
   sum()

infos_geograficas %>%
   select(area_mun_km2) %>%
   sum() %>%
   scales::comma(
      accuracy = 0.01,
      big.mark = ".",
      decimal.mark = ","
   )

rm(coords_munic, area_munic)


# Conseguindo a Semana Epidemiológica... ----

cls()

vroom::vroom(
   file = "https://s3-sa-east-1.amazonaws.com/ckan.saude.gov.br/SRAG/2020/INFLUD-18-01-2021.csv"
   , delim = ";"
   , col_names = TRUE
   , col_select = c("DT_NOTIFIC", "SEM_NOT", "DT_SIN_PRI", "SEM_PRI")
   # , n_max = 5
   , trim_ws = TRUE
   , num_threads = parallel::detectCores(logical = TRUE)
) %>%
   mutate(
      data_pri_sin = lubridate::dmy(DT_SIN_PRI),
      sem_pri_sint = as.integer(SEM_PRI),
      data_notif = lubridate::dmy(DT_NOTIFIC),
      sem_notif = as.integer(SEM_NOT)
   ) %>%
   select(
      data_pri_sin,
      sem_pri_sint,
      data_notif,
      sem_notif
   ) %>%
   arrange(
      data_pri_sin,
      data_notif,
      sem_pri_sint,
      sem_notif
   ) %>%
   distinct(
      data_pri_sin,
      sem_pri_sint,
      data_notif,
      sem_notif
   ) -> temp_sem_epid_2020

vroom::vroom(
   file = "https://s3-sa-east-1.amazonaws.com/ckan.saude.gov.br/SRAG/2021/INFLUD21-19-07-2021.csv"
   , delim = ";"
   , col_names = TRUE
   , col_select = c("DT_NOTIFIC", "SEM_NOT", "DT_SIN_PRI", "SEM_PRI")
   # , n_max = 5
   , trim_ws = TRUE
   , num_threads = parallel::detectCores(logical = TRUE)
) %>%
   mutate(
      data_pri_sin = lubridate::dmy(DT_SIN_PRI),
      sem_pri_sint = as.integer(SEM_PRI + 53L),
      data_notif = lubridate::dmy(DT_NOTIFIC),
      sem_notif = as.integer(SEM_NOT + 53L)
   ) %>%
   select(
      data_pri_sin,
      data_notif,
      sem_pri_sint,
      sem_notif
   ) %>%
   arrange(
      data_pri_sin,
      sem_pri_sint,
      data_notif,
      sem_notif
   ) %>%
   distinct(
      data_pri_sin,
      sem_pri_sint,
      data_notif,
      sem_notif
   ) -> temp_sem_epid_2021

temp_sem_epid <- rbind(temp_sem_epid_2020, temp_sem_epid_2021)

# Rápida conferência...
cls()

temp_sem_epid %>%
   glimpse()

temp_sem_epid %>%
   object.size()

temp_sem_epid %>%
   select(
      date = data_pri_sin,
      sem_pri_sint
   ) %>%
   filter(
      !is.na(date),
      !is.na(sem_pri_sint)
   ) %>%
   arrange(
      date,
      sem_pri_sint
   ) %>%
   distinct(
      date,
      sem_pri_sint
   ) -> sem_pri_sint

temp_sem_epid %>%
   select(
      date = data_notif,
      sem_notif
   ) %>%
   filter(
      !is.na(date),
      !is.na(sem_notif)
   ) %>%
   arrange(
      date,
      sem_notif
   ) %>%
   distinct(
      date,
      sem_notif
   ) -> sem_notif


sem_pri_sint %>%
   full_join(
      y = sem_notif,
      by = "date"
      ) %>%
   as.data.frame()

sem_pri_sint %>%
   full_join(
      y = sem_notif,
      by = "date"
   ) %>%
   filter(sem_pri_sint != sem_notif)

sem_pri_sint %>%
   full_join(
      y = sem_notif,
      by = "date"
   ) %>%
   select(
      date,
      semana_epidem = sem_notif
   ) %>%
   arrange(
      date,
      semana_epidem
   ) %>%
   distinct(
      date,
      semana_epidem
   ) -> semana_epid

rm(temp_sem_epid, sem_pri_sint, sem_notif, temp_sem_epid_2020, temp_sem_epid_2021)

# Rápida conferência...
cls()

semana_epid %>%
   glimpse()

semana_epid %>%
   object.size()

semana_epid %>%
   summary()

semana_epid %>%
   group_by(semana_epidem) %>%
   summarise(
      data_min = min(date, na.rm = TRUE),
      data_max = max(date, na.rm = TRUE),
      qtd_data = n_distinct(date)
   ) %>%
   as.data.frame()


# Conseguindo as Chaves de Códigos de Municípios --------------------------
covid_brasilio %>%
   mutate(cod_mun = as.integer(trunc(cod_ibge / 10))) %>%
   arrange(
      cod_mun,
      date
   ) %>%
   # Juntando as 2 bases grandes...
   full_join(
      y = covid_ministerio,
      by = c("cod_mun", "date"),
      suffix = c("_brasilio", "_ministerio")
   ) %>%
   select(
      cod_ibge,
      cod_mun,
      cod_regiao_saude,
      nome_regiao_saude,
      interior_metropol
   ) %>%
   filter(
      !is.na(cod_ibge),
      !is.na(cod_mun)
   ) %>%
   arrange(
      cod_mun,
      cod_ibge,
      cod_regiao_saude,
      nome_regiao_saude,
      interior_metropol
   ) %>%
   group_by(
      cod_mun,
      cod_ibge
   ) %>%
   summarise(
      cod_regiao_saude_budega = min(cod_regiao_saude, na.rm = TRUE),
      nome_regiao_saude_budega = min(nome_regiao_saude, na.rm = TRUE),
      interior_metropol_budega = min(interior_metropol, na.rm = TRUE)
   ) %>%
   ungroup() %>%
   select(
      cod_mun,
      cod_ibge,
      cod_regiao_saude = cod_regiao_saude_budega,
      nome_regiao_saude = nome_regiao_saude_budega,
      interior_metropol = interior_metropol_budega
   ) %>%
   distinct(
      cod_mun,
      cod_ibge,
      cod_regiao_saude,
      nome_regiao_saude,
      interior_metropol
   ) %>%
   arrange(
      cod_mun
      , cod_ibge
      , cod_regiao_saude
      , nome_regiao_saude
      , interior_metropol
   ) -> infos_chaves

# Rápida conferência...
cls()

infos_chaves %>%
   glimpse()

infos_chaves %>%
   object.size()

infos_chaves %>%
   summary()



# Conseguindo os Dados de Mapas -------------------------------------------
cls()

tabela_ufs <- geobr::read_state(
   code_state = "all",
   year = 2019,
   showProgress = TRUE
)

tabela_mun <- geobr::read_municipality(
   code_muni = "all",
   year = 2019,
   showProgress = TRUE
)

# Rápida Conferência...
tabela_ufs %>% glimpse()

tabela_mun %>% glimpse()

sum(sf::st_area(x = tabela_ufs))

sum(sf::st_area(x = tabela_mun))

tabela_ufs %>% object.size()

tabela_mun %>% object.size()


# Organizando as Informações que temos... ---------------------------------
cls()

covid_R4DS2 %>% glimpse()

covid_ministerio %>% glimpse()

covid_brasilio %>% glimpse()

infos_chaves %>% glimpse()

infos_geograficas %>% glimpse()

semana_epid %>% glimpse()


covid_brasilio %>%
   mutate(cod_mun = as.integer(trunc(cod_ibge / 10))) %>%
   arrange(
      cod_mun,
      date
   ) %>%
   # Juntando as 2 bases grandes...
   full_join(
      y = covid_ministerio,
      by = c("cod_mun", "date"),
      suffix = c("_brasilio", "_ministerio")
   ) %>%
   select(
      cod_ibge,
      cod_mun,
      date,
      everything(),
      -semana_epidem,
      -interior_metropol
   ) %>%
   mutate(
      cont_nov_brasilio_ministerio = coalesce(
         contagios_novos_brasilio,
         contagios_novos_ministerio
      ),
      cont_nov_ministerio_brasilio = coalesce(
         contagios_novos_ministerio,
         contagios_novos_brasilio
      ),
      obit_nov_brasilio_ministerio = coalesce(
         obitos_novos_brasilio,
         obitos_novos_ministerio
      ),
      obit_nov_ministerio_brasilio = coalesce(
         obitos_novos_ministerio,
         obitos_novos_brasilio
      )
   ) %>%
   # Agregando a chave do Código de Município do IBGE...
   arrange(
      cod_mun
   ) %>%
   left_join(
      y = infos_chaves,
      by = "cod_mun",
      suffix = (c("_big", "_key"))
   ) %>%
   mutate(
      cod_ibge = coalesce(cod_ibge_key, cod_ibge_big),
      cod_regiao_saude = coalesce(cod_regiao_saude_key, cod_regiao_saude_big),
      nome_regiao_saude = coalesce(nome_regiao_saude_key, nome_regiao_saude_big)
   ) %>%
   select(
      date,
      cod_ibge,
      cod_mun,
      everything(),
      -ends_with("_big"),
      -ends_with("_key")
   ) %>%
   # Agregando as Informações Geográficas do Município...
   arrange(
      cod_ibge,
   ) %>%
   left_join(
      y = infos_geograficas,
      by = "cod_ibge"
   ) %>%
   # Agregando a Semana Epidemiológica...
   arrange(
      date
   ) %>%
   left_join(
      y = semana_epid,
      by = "date"
   ) %>%
   # Enfim, finalizando a base...
   select(
      date,
      semana_epidem,
      cod_ibge,
      cod_mun,
      lat,
      lon,
      area_km2 = area_mun_km2,
      capital,
      interior_metropol,
      pop_est_2019,
      pop_tcu_2019,
      municipio_brasilio,
      municipio_ministerio,
      cod_regiao_saude,
      nome_regiao_saude,
      estado_brasilio,
      estado_ministerio,
      regiao,
      contagios_novos_brasilio,
      contagios_novos_ministerio,
      obitos_novos_brasilio,
      obitos_novos_ministerio,
      contagios_acumulados_brasilio,
      contagios_acumulados_ministerio,
      obitos_acumulados_brasilio,
      obitos_acumulados_ministerio,
      everything(),
      -cod_uf
   ) %>%
   arrange(
      cod_ibge,
      date
   ) -> big_temp

# Rápida Conferência...
cls()

big_temp %>%
   glimpse()

big_temp %>%
   object.size()

big_temp %>%
   summarise(
      date_max = max(date, na.rm = TRUE),
      cont_nov_bras_minist = sum(cont_nov_brasilio_ministerio, na.rm = TRUE),
      cont_nov_minist_bras = sum(cont_nov_ministerio_brasilio, na.rm = TRUE),
      obit_nov_bras_minist = sum(obit_nov_brasilio_ministerio, na.rm = TRUE),
      obit_nov_minist_bras = sum(obit_nov_ministerio_brasilio, na.rm = TRUE)
   )


# Testando a semelhança de informações similares... -----------------------
testa <- function(var){
   cat(var,"\n")

   filter <- paste0(var,"_brasilio != ",var,"_ministerio", sep = "")

   big_temp %>%
      filter(!! rlang::parse_expr(filter)) %>%
      count() %>%
      as.integer()
}

testa2 <- function(var1, var2){
   cat(var1," x ", var2,"\n")

   filter <- paste0(var1," != ",var2, sep = "")

   big_temp %>%
      filter(!! rlang::parse_expr(filter)) %>%
      count() %>%
      as.integer()
}

cls()

big_temp %>%
   glimpse()

testa2("pop_est_2019", "pop_tcu_2019")
testa("municipio")
testa("estado")
testa("contagios_novos")
testa("obitos_novos")
testa("contagios_acumulados")
testa("obitos_acumulados")

big_temp %>%
   mutate(
      pop_2019 = coalesce(pop_est_2019, pop_tcu_2019),
      municipio = coalesce(municipio_brasilio, municipio_ministerio),
      uf = coalesce(estado_brasilio, estado_ministerio),
      regiao = case_when(
         uf %in% c("ES", "MG", "RJ", "SP") ~ "Sudeste",
         uf %in% c("AL", "BA", "CE", "MA", "PB", "PE", "PI", "RN", "SE") ~ "Nordeste",
         uf %in% c("PR", "RS", "SC") ~ "Sul",
         uf %in% c("DF", "GO", "MS", "MT") ~ "Centro-Oeste",
         uf %in% c("AC", "AM", "AP", "PA", "RO", "RR", "TO") ~ "Norte",
         TRUE ~ NA_character_
      ),
      contagios_novos = coalesce(contagios_novos_ministerio, contagios_novos_brasilio),
      obitos_novos = coalesce(obitos_novos_ministerio, obitos_novos_brasilio),
      contagios_acumulados = coalesce(contagios_acumulados_ministerio, contagios_acumulados_brasilio),
      obitos_acumulados = coalesce(obitos_acumulados_ministerio, obitos_acumulados_brasilio)
   ) %>%
   select(
      date,
      semana_epidem,
      cod_ibge,
      # cod_mun,
      lat,
      lon,
      area_km2,
      capital,
      interior_metropol,
      pop_2019,
      municipio,
      cod_regiao_saude,
      nome_regiao_saude,
      uf,
      regiao,
      contagios_novos,
      obitos_novos,
      contagios_acumulados,
      obitos_acumulados
   ) %>%
   arrange(cod_ibge, date) -> covid

# Rápida Conferência...
cls()

covid %>%
   object.size()

covid %>%
   glimpse()

covid %>%
   select(date, where(is.numeric)) %>%
   summary()

covid %>%
   summarise(
      data_min = min(date, na.rm = TRUE),
      data_max = max(date, na.rm = TRUE),
      data_qtd = n_distinct(date),
      contagios = sum(contagios_novos, na.rm = TRUE),
      obitos = sum(obitos_novos, na.rm = TRUE)
   )

covid %>%
   group_by(semana_epidem) %>%
   summarise(
      data_min = min(date, na.rm = TRUE),
      data_max = max(date, na.rm = TRUE),
      data_qtd = n_distinct(date)
   )

semana_epid %>%
   filter(semana_epidem >= 9) %>%
   group_by(semana_epidem) %>%
   summarise(
      data_min = min(date, na.rm = TRUE),
      data_max = max(date, na.rm = TRUE),
      data_qtd = n_distinct(date)
   ) %>% tail(15)


# Salvando arquivos temporários... ----------------------------------------

## Base Auxiliar - Primeiras Semanas Epidemiológicas
cls()

semana_epid %>%
   glimpse()

semana_epid %>%
   object.size()

saveRDS(
   object = semana_epid,
   file = "data-raw/semanas_epidemiologicas.rds",
   ascii = FALSE,
   version = 3,
   compress = "xz"
)


## Base Principal - COVID
cls()

covid %>%
   glimpse()

covid %>%
   summary()

covid %>%
   object.size()

saveRDS(
   object = covid,
   file = "data-raw/covid.rds",
   ascii = FALSE,
   version = 3,
   compress = "xz"
)


## Base Auxiliar - Informações Geográficas
cls()

infos_geograficas %>%
   glimpse()

infos_geograficas %>%
   object.size()

saveRDS(
   object = infos_geograficas,
   file = "data-raw/infos_geograficas.rds",
   ascii = FALSE,
   version = 3,
   compress = "xz"
)


## Base Backup - Ministerio da Saude
cls()

covid_ministerio %>%
   glimpse()

covid_ministerio %>%
   object.size()

saveRDS(
   object = covid_ministerio,
   file = "data-raw/backup_covid_ministerio.rds",
   ascii = FALSE,
   version = 3,
   compress = "xz"
)


## Base Auxiliar - Dados de Mapas dos Estados
cls()

tabela_ufs %>%
   glimpse()

tabela_ufs %>%
   object.size()

saveRDS(
   object = tabela_ufs,
   file = "data-raw/tabela_ufs.rds",
   ascii = FALSE,
   version = 3,
   compress = "xz"
)


## Base Auxiliar - Dados de Mapas dos Municípios
cls()

tabela_mun %>%
   glimpse()

tabela_mun %>%
   object.size()

saveRDS(
   object = tabela_mun,
   file = "data-raw/tabela_mun.rds",
   ascii = FALSE,
   version = 3,
   compress = "xz"
)


## code to prepare `infos_geograficas` dataset goes here

usethis::use_data(
   infos_geograficas,
   internal = FALSE,
   overwrite = TRUE,
   compress = "xz",
   version = 3
)


## code to prepare `semana_epid` dataset goes here

usethis::use_data(
   semana_epid,
   internal = FALSE,
   overwrite = TRUE,
   compress = "xz",
   version = 3
)


## code to prepare `tabela_ufs` dataset goes here

usethis::use_data(
   tabela_ufs,
   internal = FALSE,
   overwrite = TRUE,
   compress = "xz",
   version = 3
)


## code to prepare `tabela_mun` dataset goes here

usethis::use_data(
   tabela_mun,
   internal = FALSE,
   overwrite = TRUE,
   compress = "xz",
   version = 3
)


# Removendo arquivos temporários ------------------------------------------
rm(list = ls(pattern = "_"))
brunocp76/AnaliseCOVID19Brasil documentation built on June 11, 2022, 10:39 p.m.