Indicadores 20A Municipais 2020

Realização dos cálculos para o indicador 20A para cada município do estado de Goiás

Autor

João Marcos R. Lima

Data de Publicação

26/06/2024

Lendo os Dados do FINBRA

A Tabela contendo esses dados foi retirada do site do Sincofi e o pacote readxl foi utilizado para ler o conjunto de dados.

Foram atribuidos os filtros para download da tabela

Exercíco: 2020

Escopo: Municípios

Tabela: Despesas por Função (Anexo I-E)

Pegando os nomes de todas as cidades de Goiás

Foi feito um web-scrapping de uma pagina da wikipédia referente a Lista de Municípios de Goiás.

O pacote rvest(Wickham 2024) foi necessário para fazer a raspagem dos dados.

———. 2024. «rvest: Easily Harvest (Scrape) Web Pages». https://CRAN.R-project.org/package=rvest.

O pacote dplyr também foi utilizado

library(rvest)
link <- "https://pt.wikipedia.org/wiki/Lista_de_munic%C3%ADpios_de_Goi%C3%A1s"
page <- read_html(link)

tabelawikipedia <- html_element(page, "table.sortable") %>%
  html_table()
municipiosdegoias <- tabelawikipedia$`Município[7][8]`

Verificando quais municipios o conjunto de dados nao contempla

Primeiro, organizamos a coluna Instituição da tabela de dados Dsp2020 para deixar apenas os nomes dos municípios, o pacote stringr (Wickham 2023) foi necessário.

———. 2023. «stringr: Simple, Consistent Wrappers for Common String Operations». https://CRAN.R-project.org/package=stringr.

Após, foi feito um comparativo de quais cidades da Lista da Wikipédia não estão contempladas pelo conjunto de dados Dsp2020 filtrado pelos níveis requisitados na coluna Conta, e foi retornado as cidades faltantes.

Aviso

Tive que tirar São Miguel do Passa-Quatro do vetor “quaisnaoestao” (na posição 10) pois já tem informações desse municipio em Dsp2020.

library(stringr)
munic <- unique(Dsp2020$Instituição)
munic <- str_replace(munic,"Prefeitura Municipal de ",'')
munic <- str_replace(munic," - GO",'')
quaisnaoestao <- setdiff(municipiosdegoias,munic)
quaisnaoestao <- quaisnaoestao[-10]

Baixando os dados dos Municipios Faltantes

Depois de Baixar os dados dos municipios faltantes, dados baixados do Portal do Cidadão, compactei a pasta onde coloquei as tabelas e usei funções do pacote purrr (Wickham e Henry 2023) para ler toda essa pasta de uma vez, como uma lista de tabelas (cada elemento da lista é uma tabela referente a uma das cidades faltantes)

Wickham, Hadley, e Lionel Henry. 2023. «purrr: Functional Programming Tools». https://CRAN.R-project.org/package=purrr.

Baixei uma por uma as tabelas das despesas das cidades faltantes, não consegui fazer o web scrapping no site

nomes <- list.files(path="C:/Users/05681371166/Desktop/indicador 20A/8288349/despesas/cidades/",full.names = T)
lista_arquivos <- nomes %>%
  purrr::map(readxl::read_excel)
nomes <- quaisnaoestao
names(lista_arquivos) <- nomes

Organizando o Conjunto de Dados

Aqui, eu substitui os valores da coluna Instituição pelos valores da variável “Cidades”, e agrupei as linhas pelo nome das Cidades, somando os valores da coluna “Valor” (que eram os valores referentes as despesas educacionais).

library(stringr)
Cidades <- Dsp2020$Instituição
Cidades <- str_replace(Cidades,"Prefeitura Municipal de ",'')
Cidades <- str_replace(Cidades," - GO",'')
Dsp2020$Instituição <- Cidades

Dsp2020 <- Dsp2020[,c(1,11)]

Filtrando o ano de 2020 e as Unidades Orcamentarias e Juntando os Dados

Aqui, peguei aquela lista de tabelas (informações das cidades faltantes em Dsp2020), filtrei de todas as tabelas, as linhas onde a coluna “[ano].[ano]” valia “2020”, e destas, procurei dentro das colunas “[unidade_orcamentaria].[unidade_orcamentaria]” as palavras “EDUC” ,“FUNDEB” e “FUNDEF”, pois para cada tabela dentro da lista de tabelas, os valores referentes as despesas educacionais estavam dispostos por diferentes nomes de unidades orçamentárias.

Após realizar a filtragem, o agoritmo acrescenta uma linha no conjunto de dados Dsp2020, pegando o nome daquela cidade e a soma da coluna “[Measures].[valor]”, e ao final, temos as Despesas Municipais referentes ao ano de 2020 para quase todas as cidades de Goias.

Os pacotes tibble (Müller e Wickham 2023)e DT (Xie, Cheng, e Tan 2024) foram utilizados.

Müller, Kirill, e Hadley Wickham. 2023. «tibble: Simple Data Frames». https://CRAN.R-project.org/package=tibble.
Xie, Yihui, Joe Cheng, e Xianying Tan. 2024. «DT: A Wrapper of the JavaScript Library ’DataTables’». https://CRAN.R-project.org/package=DT.
Instituição <- nomes
n <- nrow(Dsp2020)
for(j in 1:length(lista_arquivos)){
  dados2020 <- lista_arquivos[[j]][lista_arquivos[[j]][,1]== "2020",]
  atomic <- logical(nrow(dados2020))
  for(i in 1:nrow(dados2020)){
    atomic[i] <- as.logical(str_detect(as.character(dados2020[i,3]), "FUNDEB|EDUC|FUNDEF"))
  }
  n <- n + 1
  Dsp2020[n,] <- tibble::tibble(Instituição[j],sum(dados2020[atomic,]$`[Measures].[valor]`))
}

rm(list = setdiff(ls(), c("Dsp2020")))
  Dsp2020 |>
  DT::datatable(options=list(pageLength=5))

Lendo o PIB dos Municipios

Aqui, baixei do site do IBGE uma tabela referente ao PIB de cada Município do estado de Goiás, extraí as colunas “Ano”, “Nome do Município”, e as colunas referentes aos valores do PIB, e as linhas onde Ano era 2020.

Após, ordenamos em ordem alfabética a coluna Instituição de Dsp2020, e criamos um NovoDataFrame que juntava as colunas e linhas extraidas da tabela do IBGE referente ao PIB,Nome do Municipio e Ano, e a tabela de dados Dsp2020. Daí, verifiquei se as colunas referentes aos nomes dos municipios estavam iguais, e criei uma ultima coluna que calculava o indicador 20A para cada município.

Ao final, removi as colunas desnecessárias e deixei apenas a coluna com os nomes dos municípios e o indicador 20A.

O pacote plyr (Wickham 2011) foi utilizado

Wickham, Hadley. 2011. «The Split-Apply-Combine Strategy for Data Analysis» 40. https://www.jstatsoft.org/v40/i01/.
PIBMunicipios <- PIBMunicipios[PIBMunicipios[,"Ano"]==2020,] 

PIBMunicipios <- PIBMunicipios[PIBMunicipios[,"Sigla da Unidade da Federação"]=="GO",]

PIBMunicipios <- as.data.frame(PIBMunicipios)

Dsp2020 <- plyr::arrange(Dsp2020,Instituição)
PIBMunicipios <- plyr::arrange(PIBMunicipios,`Nome do Município`)

#Dsp2020$Instituição == PIBMunicipios$`Nome do Município`
#Deu tudo TRUE

I20A <- cbind(Dsp2020,PIBMunicipios[,c(8,39)])
Indicador <- I20A[,2]/(I20A[,4]*1000)

I20A <- cbind(I20A,round(Indicador*100,3))
I20A <- I20A[,c(1,5)]

names(I20A) <- c("Nome do Municipio","Indicador 20 A")
rm(list = setdiff(ls(), c("I20A")))

I20A |>
  DT::datatable(options=list(pageLength=10))