Skip to content

Instantly share code, notes, and snippets.

@rfsaldanha
Created June 13, 2022 13:20
Show Gist options
  • Save rfsaldanha/a849716f4807fea7104b12e01fdf875f to your computer and use it in GitHub Desktop.
Save rfsaldanha/a849716f4807fea7104b12e01fdf875f to your computer and use it in GitHub Desktop.
microdatasus with SQLite
# Pacotes
library(microdatasus)
library(tidyverse)
library(dbplyr)
library(DBI)
library(RSQLite)
# Cria conexão com o banco de dados
conn <- dbConnect(RSQLite::SQLite(), "sih.SQLite")
# Realiza download e pré-processamento dos dados em loop
anos <- c(2019, 2020)
meses <- 1:12
ufs <- c("AC", "AL", "AP", "AM", "BA", "CE", "DF", "ES",
"GO", "MA", "MT", "MS", "MG", "PA", "PB", "PR", "PE",
"PI", "RJ", "RN", "RS", "RO", "RR", "SC", "SP", "SE",
"TO")
for(ano in anos){
for(mes in meses){
for(uf in ufs){
# Baixa o dado para um ano, mês e UF específico
tmp <- fetch_datasus(
year_start = ano, year_end = ano,
month_start = mes, month_end = mes,
uf = uf, information_system = "SIH-RD"
)
# Pré-processamento dos dados
tmp <- process_sih(data = tmp)
# Escreve na tabela "sih" no banco de dados,
# apensando os dados de cada ano e mês
dbWriteTable(conn = conn, name = "sih", value = tmp, append = TRUE)
# Remove a tabela temporária
rm(tmp)
}
}
}
# Realiza uma consulta ao banco de dados,
# criando uma tabela de quantidade de registros
# por sexo e causa básica
tbl(conn, "sih") %>%
group_by(SEXO, COMPLEX) %>%
summarise(freq = n()) %>%
ungroup() %>%
collect()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment