Skip to content

Instantly share code, notes, and snippets.

@pmarkun
Created October 10, 2023 05:13

Revisions

  1. pmarkun created this gist Oct 10, 2023.
    38 changes: 38 additions & 0 deletions extraidados-parlamentares.r
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,38 @@
    library(jsonlite)
    library(dplyr)
    library(purrr)
    library(data.table)
    library(progress)

    # Função para extrair campos selecionados do JSON
    extrai_dados_deputado <- function(id, pb) {
    pb$tick()
    url <- paste0("https://dadosabertos.camara.leg.br/api/v2/deputados/", id)
    json_data <- fromJSON(url, flatten = TRUE)$dados

    selected_fields <- data.frame(
    id = json_data$id,
    nome = json_data$nomeCivil,
    partido = json_data$ultimoStatus$siglaPartido,
    sexo = json_data$sexo,
    uf = json_data$ultimoStatus$siglaUf
    )
    return(selected_fields)
    }

    # Extrai os dados selecionados para todos os IDs e adiciona ao dataframe
    sample <- fread("~/devel/legisla/indicadores/indicador-bolsonaro-2023-10-09.csv")
    pb <- progress_bar$new(format = "Baixando dados [:bar] :percent eta: :eta", total = length(sample$external_id))
    dados_camara <- sample$external_id %>% map_dfr(~extrai_dados_deputado(.x, pb))

    dados_tse <- fread("~/devel/datasets/eleicoes/2018/candidatos/consulta_cand_2018_BRASIL.csv", encoding = 'Latin-1') %>%
    filter(DS_CARGO %in% c("DEPUTADO FEDERAL", "SENADOR")) %>%
    select(uf=SG_UF, nome=NM_CANDIDATO, cargo=DS_CARGO, raca=DS_COR_RACA)

    dados_camara$nome <- iconv(toupper(dados_camara$nome), from = "UTF-8", to = "ASCII//TRANSLIT")
    dados_tse$nome <- iconv(toupper(dados_tse$nome), from = "UTF-8", to = "ASCII//TRANSLIT")

    parlamentares_rico <- dados_camara %>%
    left_join(dados_tse)

    write.csv(parlamentares_rico, file = "~/devel/legisla/indicadores/parlamentares2019.csv")