Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save fernandobarbalho/4ce809513a5f1d86fa83a79ba0b2e70c to your computer and use it in GitHub Desktop.
Save fernandobarbalho/4ce809513a5f1d86fa83a79ba0b2e70c to your computer and use it in GitHub Desktop.
unidade_gestao<- 255000 #funasa
ano<-2020
#aqui pega todas as combinações de dia e mês. Pode-se alterar a partir da necessidade do usuário
dia_do_mes<- str_pad(as.character("1":"31"), side = "left",width=2, pad="0")
nome_mes<- str_pad(as.character("1":"12"), side = "left",width=2, pad="0")
data_com_erro<- tibble(dia=character(),mes=character(),ano=character())
mapa_completo_dados_abertos<-
map_dfr(nome_mes, function(mes){
map_dfr(dia_do_mes, function(dia){
print(paste0(ano,mes,dia))
#testa se a data é válida
if (is.na(lubridate::as_date(paste(ano,mes,dia,sep = "-")))){
return()
}
url<-paste0("https://www.portaltransparencia.gov.br/download-de-dados/despesas/",ano,mes,dia)
tmp<- tempdir()
destfile<- paste0(tmp,"\\transparencia.zip")
res<- try(download.file(url = url,
destfile = destfile, mode = "wb" ))
if (inherits(res, "try-error")){
data_com_erro<- bind_rows(data_com_erro, tibble(dia=dia,mes=mes,ano=as.character(ano)))
#monta csv com as datas que geraram erros
data_com_erro %>%
readr::write_csv("data_com_erros.csv")
return()
}
arquivo_pagamento<- paste0(ano, mes, dia,"_Despesas_Pagamento.csv")
unzip(destfile, files = arquivo_pagamento, exdir =tmp)
arquivo_pagamento<- paste0(tmp,"\\", ano, mes, dia,"_Despesas_Pagamento.csv")
pagamento<-read_delim(arquivo_pagamento,
delim = ";", escape_double = FALSE, col_types = cols(`Código Órgão Superior` = col_character(),
`Código Unidade Gestora` = col_character(),
`Código Categoria de Despesa` = col_character(),
`Código Grupo de Despesa` = col_character(),
`Código Modalidade de Aplicação` = col_character(),
`Código Elemento de Despesa` = col_character()),
locale = locale(decimal_mark = ",", grouping_mark = ".",
encoding = "LATIN1"), trim_ws = TRUE)
if (NROW(pagamento)==0){
print("sem linha")
return()
}
pagamento <- janitor::clean_names(pagamento)
filtro<- pagamento[pagamento$codigo_unidade_gestora %in% as.character(unidade_gestao),]
if (NROW(filtro)==0){
print("sem dados para unidade gestora")
return()
}
filtro
})
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment