5em
Nessa lista, utilizamos os pacotes vroom e
data.table para analisar, com rapidez computacional e
eficiente uso de memória, dados públicos sobre a vacinação contra a
Covid-19.
Extra: Faça isso automatizando os downloads e direcionando-os para uma mesma pasta. Esta pasta deve ser criada com código R. Sugestão: faça com que a máquina confira se a pasta existe e crie a pasta apenas se não existir.
pasta <- "dados"
if (file.exists(pasta)) {
print("A pasta já existe")
rm(pasta)
} else {
dir.create(pasta)
rm(pasta)
}
link <- c("https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DAC/part-00000-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
,"https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DAC/part-00001-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
,"https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DAC/part-00002-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
,"https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DAL/part-00000-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
,"https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DAL/part-00001-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
,"https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DAL/part-00002-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
,"https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DAM/part-00000-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
,"https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DAM/part-00001-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
,"https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DAM/part-00002-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
,"https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DAP/part-00000-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
,"https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DAP/part-00001-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
,"https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DAP/part-00002-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
,"https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DBA/part-00000-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
,"https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DBA/part-00001-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
,"https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DBA/part-00002-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
,"https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DCE/part-00000-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
,"https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DCE/part-00001-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
,"https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DCE/part-00002-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
,"https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DDF/part-00000-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
,"https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DDF/part-00001-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
,"https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DDF/part-00002-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
,"https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DES/part-00000-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
,"https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DES/part-00001-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
,"https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DES/part-00002-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
,"https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DGO/part-00000-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
,"https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DGO/part-00001-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
,"https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DGO/part-00002-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
,"https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DMA/part-00000-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
,"https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DMA/part-00001-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
,"https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DMA/part-00002-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
,"https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DMG/part-00000-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
,"https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DMG/part-00001-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
,"https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DMG/part-00002-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
,"https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DMS/part-00000-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
,"https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DMS/part-00001-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
,"https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DMS/part-00002-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
,"https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DMT/part-00000-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
,"https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DMT/part-00001-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
,"https://s3.sa-east-1.amazonaws.com/ckan.saude.gov.br/SIPNI/COVID/uf/uf%3DMT/part-00002-8cc53ec0-4f0d-48d1-ab69-fc5dbebe4013.c000.csv"
)
nome_destino <- c("./dados/AC1.csv","./dados/AC2.csv","./dados/AC3.csv",
"./dados/AL1.csv","./dados/AL2.csv","./dados/AL3.csv",
"./dados/AM1.csv","./dados/AM2.csv","./dados/AM3.csv",
"./dados/AP1.csv","./dados/AP2.csv","./dados/AP3.csv",
"./dados/BA1.csv","./dados/BA2.csv","./dados/BA3.csv",
"./dados/CE1.csv","./dados/CE2.csv","./dados/CE3.csv",
"./dados/DF1.csv","./dados/DF2.csv","./dados/DF3.csv",
"./dados/ES1.csv","./dados/ES2.csv","./dados/ES3.csv",
"./dados/GO1.csv","./dados/GO2.csv","./dados/GO3.csv",
"./dados/MA1.csv","./dados/MA2.csv","./dados/MA3.csv",
"./dados/MG1.csv","./dados/MG2.csv","./dados/MG3.csv",
"./dados/MS1.csv","./dados/MS2.csv","./dados/MS3.csv",
"./dados/MT1.csv","./dados/MT2.csv","./dados/MT3.csv")
# Rodar o comando abaixo apenas uma vez para baixar!!!!
# download.file(link, nome_destino) {como já baixei, deixo esta parte como comentário}
p_load (do pacote
pacman), carregue o pacote vroom (que deve ser
usado em toda a Questão 1) e use-o para carregar o primeiro dos arquivos
baixados para o R. Descreva brevemente o banco de dados.Extra: explore essa amostra sem o comando explícito de download.
p_load(vroom,fs,tidyfst)
AC1 <- vroom("./dados/AC1.csv",
locale = locale("br", encoding = "UTF-8"),
num_threads = threads)
Descrição: Este banco de dados é a primeira de três partes que compõe o banco de dados sobre registros de vacinação - COVID 19 do estado do Acre. Além desse estado, trabalharemos também com os registros dos estados do Alagoas, Amazonas, Amapá, Bahia, Ceará, Espírito Santo, Goiás, Maranhão, Minas Gerais, Mato Grosso do Sul, Mato Grosso, além do Distrito Federal.
A disponibilidade dos arquivos é feita pelo DataSUS de forma pública e gratuita. Para mais informações, acesse DataSUS.
O dado de cada um dos estados é disponibilizado na forma de arquivos .csv, divididos em 3 partes. O tamanho dos arquivos difere levemente, ocupando entre 55Mb e 70Mb de memória rígida cada.
As tabelas constam informações individuais de cada vacinado. Cada linha da tabela é um indivíduo. Cada coluna da tabela é uma observação, característica, variável, do indivíduo.
b (2.35Gb)
pipe(). Observe que a
filtragem deve ser feita durante o carregamente, e não após ele.Quantos megabites deixaram de ser carregados para a memória RAM (ao
fazer a filtragem durante a leitura, e não no próprio
R)?
filtro <- "findstr ASTRAZENECA/FIOCRUZ C:\\Users\\toled\\Documents\\GitHub\\CE3\\dados\\AC1.csv"
AC1_AZ <- vroom(pipe(filtro),
locale = locale("br", encoding = "UTF-8"),
num_threads = threads)
economia <- format(object.size(AC1)-object.size(AC1_AZ),units="auto")
43.8 Mb deixaram de ser carregados para a memória RAM.
R
todos os arquivos da pasta de uma única vez (usando
apenas um comando R, sem métodos iterativos).pasta_arquivos <- "./dados/"
nomes_arquivos <- list.files(pasta_arquivos)
nomes_arquivos <- str_c(pasta_arquivos, nomes_arquivos)
df <- vroom(nomes_arquivos,
locale = locale("br", encoding = "UTF-8"),
num_threads = threads)
data.table,
repita o procedimento do item 1e), agora mantendo,
durante a leitura, apenas as 3 primeiras colunas. Use o pacote
geobr para obter os dados sobre as regiões de saúde do
Brasil (procure as funções do geobr). Junte (join)
os dados da base de vacinações com o das regiões de saúde.Descreva brevemente o que são as regiões (use documentação do governo, não se atenha à documentação do pacote).
p_load(data.table)
df <- nomes_arquivos %>%
map(fread,
drop=c(4:17,19:28,30:32),
nThread=threads) %>%
rbindlist()
p_load(geobr)
rs <- read_health_region(
year = 2013,
macro = FALSE,
simplified = FALSE,
showProgress = TRUE
)
rs <- as.data.table(rs)
index <- fread("./index.csv",select=(4:5),nThread = threads)
colnames(df)[4] <- "regiao ibge"
colnames(index) <- c("regiao ibge","regiao saude")
index$`regiao ibge`<- as.factor(index$`regiao ibge`)
index$`regiao saude` <- as.factor(index$`regiao saude`)
df$`regiao ibge` <- as.factor(df$`regiao ibge`)
colnames(rs)[1] <- "regiao saude"
rs$`regiao saude` <- as.factor(rs$`regiao saude`)
df <- merge(df,index, by="regiao ibge")
junto <- merge(df, rs, by = "regiao saude")
Região de Saúde: espaço geográfico contínuo constituído por agrupamentos de Municípios limítrofes, delimitado a partir de identidades culturais, econômicas e sociais e de redes de comunicação e infraestrutura de transportes compartilhados, com a finalidade de integrar a organização e o planejamento de ações e serviços de saúde. Fonte:SciELO
Crie uma tabela com as 5 regiões de saúde com menos vacinados em cada faixa de vacinação.
Observação: os itens a) e b) podem ser executados de modo encadeado, usando o operador de pipe.
Tabelas:
| regiao saude | n | name_health_region | code_state | abbrev_state | name_state |
|---|---|---|---|---|---|
| 31041 | 345 | Manhuaçu | 31 | MG | Minas Gerais |
| 31046 | 322 | Nanuque | 31 | MG | Minas Gerais |
| 31050 | 267 | Passos Piumhi | 31 | MG | Minas Gerais |
| 31067 | 315 | Sete Lagoas | 31 | MG | Minas Gerais |
| 31076 | 339 | Vespasiano | 31 | MG | Minas Gerais |
| regiao saude | n | name_health_region | code_state | abbrev_state | name_state |
|---|---|---|---|---|---|
| 29019 | 2963 | Ribeira do Pombal | 29 | BA | Bahia |
| 29026 | 3261 | Teixeira de Freitas | 29 | BA | Bahia |
| 13006 | 3288 | Regional Purus | 13 | AM | Amazônas |
| 29018 | 3292 | Porto Seguro | 29 | BA | Bahia |
| 51015 | 3351 | Vale do Peixoto | 51 | MT | Mato Grosso |
dtplyr, repita
o procedimento dos itens a) e b)
(lembre-se das funções mutate, group_by,
summarise, entre outras). Garanta que você conseguiu criar
um objeto com lazy evaluation e outro resgatado todos os dados
para a memória. Exiba os resultados.De fato, se olharmos o espaço ocupado em memória do objeto original 1.5238714^{9}, do objeto lazy 1.5238727^{9}e dos objetos em conjunto 1.5238727^{9}, observamos o objeto lazy não está ocupando espaço extra em memória em relação ao objeto original.
microbenchmark,
comparare o tempo de execução do item c) quando se
adota as funções do dtplyr e do dplyr.Tempo de execução dos códigos usando dplyr e
dtplyr:
Plotando o microbenchmark realizado 100 vezes, podemos
observar que o tempo de execução do código em dtplyr é
consideravelmente mais rápido se comparado ao tempo de execução com o
dplyr.
Este PDF é um relatório formatado a fim de entrega do trabalho de forma direta e elegante. Para acesso ao código completo com comentários sobre os processos, favor observar o arquivo esboco.r que segue em anexo na entrega.