Parte 5 Apêndice
Nesta parte, apresentamos o script utilizado para montar todas as bases de dados, espaciais ou não espaciais, utilizadas nesse workshop: resultados por seção eleitoral, coordenadas geográficas dos locais de votação e divisões administrativas de municípios brasileiros.
library(here)
library(dplyr)
library(readr)
library(janitor)
library(electionsBR)
library(sf)
library(geobr)
# Cria um diretorio para guardar as bases, caso ele nao exista
if(!dir.exists("base/")) dir.create("base/")
5.1 Resultados Eleitorais
5.1.1 São Paulo em 2020
Votação por seção eleitoral dos candidatos Guilherme Boulos, Eduardo Suplicy, Fernando Holiday e Milton Leite na cidade de São Paulo em 2020.
Fonte: TSE, via electionsBR
.
# Essa função está somente na versão em dev do electionsBR
# https://github.com/silvadenisson/electionsBR
<- electionsBR::elections_tse(2020, "vote_section", "SP")
base2020
# Prepara banco incluindo agregado de votos por secao
<- base2020 |>
base2020 # Filtra pelo município de SP, 1o turno e elimina brancos/nulos
filter(NM_MUNICIPIO == "SÃO PAULO",
== 1,
NR_TURNO !NR_VOTAVEL %in% c(95, 96)) |>
# Calcula o total de votos válidos por cargo/seção
group_by(DS_CARGO,
|>
NR_ZONA, NR_SECAO) mutate(votos_validos_secao = sum(QT_VOTOS)) |>
ungroup() |>
# Filtra pelos candidatos escolhidos
filter(NM_VOTAVEL %in% c("GUILHERME CASTRO BOULOS",
"EDUARDO MATARAZZO SUPLICY",
"FERNANDO HOLIDAY SILVA BISPO",
"MILTON LEITE DA SILVA")) |>
# Seleciona variáveis de interesse
select(DT_GERACAO, ANO_ELEICAO, NR_TURNO, SG_UF,
NM_MUNICIPIO, CD_MUNICIPIO, NR_ZONA, NR_SECAO, NR_LOCAL_VOTACAO,|>
DS_CARGO, NM_VOTAVEL, QT_VOTOS, votos_validos_secao) # Limpa os nomes de variáveis
clean_names()
# Exporta o banco
saveRDS(base2020, "base/base2020_sp.rds")
5.1.2 Rio de Janeiro em 2020
Votação por seção eleitoral do candidato Eduardo Paes na cidade do Rio de Janeiro em 2020.
Fonte: TSE, via electionsBR
.
# Baixa os dados de voto-seção
<- elections_tse(2020, "vote_section", "RJ")
base2020
# Prepara banco incluindo agregado de votos por seção
<- base2020 |>
paes2020 # Filtra pelo municipio do RJ, 1o turno e elimina brancos/nulos
filter(NM_MUNICIPIO == "RIO DE JANEIRO",
== 1,
NR_TURNO !NR_VOTAVEL %in% c(95, 96)) |>
# Calcula o total de votos válidos por cargo/seção
group_by(DS_CARGO,
|>
NR_ZONA, NR_SECAO) mutate(votos_validos_secao = sum(QT_VOTOS)) |>
ungroup() |>
# Filtra pelo Eduardo Paes
filter(NR_VOTAVEL == 25 & DS_CARGO == "Prefeito") |>
# Seleciona variáveis de interesse
select(DT_GERACAO, ANO_ELEICAO, NR_TURNO, SG_UF,
NM_MUNICIPIO, CD_MUNICIPIO, NR_ZONA, NR_SECAO, NR_LOCAL_VOTACAO,|>
DS_CARGO, NM_VOTAVEL, QT_VOTOS, votos_validos_secao) # Limpa os nomes de variáveis
clean_names()
# Exporta resultado
saveRDS(paes2020, "base/base2020_rj.rds")
5.1.3 São Paulo em 2000
Shapefile com os pontos dos locais de votação e resultados da eleição municipal de 2000. Fonte: CEM (Centro de Estudos da Métropole, USP).
# Baixa o arquivo
download.file(
"https://centrodametropole.fflch.usp.br/pt-br/file/18772/download?token=t4vNFXTg",
destfile = "base/EL2000_LV_RMSP_CEM_V2.zip")
# Cria um diretorio temporario no computador
<- tempdir()
dirtemp # Descompacta do arquivo contendo o shp na pasta temporária
<- unzip("base/EL2000_LV_RMSP_CEM_V2.zip", exdir = dirtemp)
zipfile
# Lê o shp com os pontos dos locais de votação e resultados eleitorais de 2000.
<- st_read(
lv2000 3],
zipfile[# Usamos o ENCODING=WINDOWS-1252 para ajustar os caracteres com acento
options = "ENCODING=WINDOWS-1252",
crs = 4674) |>
# Filtra pontos da cidade de São Paulo. O mapa contém dados de toda a RMSP
filter(MUN_NOME == "SAO PAULO")
# Exporta resultado
saveRDS(lv2000, "base/base2000_sp.rds")
5.2 Locais de Votação
Os dados abaixo foram obtidos de um repositório do GitHub do Prof. Daniel Hidalgo (MIT). Este repositório disponibiliza os locais de votação com latitude e longitude entre 2006 e 2020 para todo o Brasil.
#Baixa o arquivo produzido por Danny Hidalgo com todos os LV entre 2006-2020
download.file(
"https://github.com/fdhidalgo/geocode_br_polling_stations/releases/download/v0.13-beta/geocoded_polling_stations.csv.gz",
here("base", "geocoded_polling_stations.csv.gz"))
# Abre os dados e filtra para o ano de 2020
<- read_csv(
baselv2020 here("base", "geocoded_polling_stations.csv.gz")) |>
filter(ano == 2020)
5.2.1 São Paulo em 2020
Agora podemos filtrar os dados georeferenciados específicos para o município de São Paulo.
# Filtra o municipio de São Paulo e mantem somente as variaveis de interesse
<- baselv2020 |>
baselv2020_sp filter(nm_localidade == "SÃO PAULO") |>
# Mantem somente 1 nr_locvot por zona. Selecionamos aleatoriamente o escolhido
group_by(nr_locvot, nr_zona) |>
slice_sample(n = 1) |>
ungroup() # n = 2.063
# Exporta banco em rds
saveRDS(baselv2020_sp, "base/baseLocais2020SP.rds")
5.2.2 Rio de Janeiro em 2020
Filtramos também os do Rio de Janeiro para 2020.
# Filtra o municipio do RJ e mantem somente as variaveis de interesse
<- baselv2020 |>
baselv2020_rj filter(nm_localidade == "RIO DE JANEIRO") |>
# Ignorando aleatoriamente aquelas que tem mais de 1 nr_locvot por zona
group_by(nr_locvot, nr_zona) |>
slice_sample(n = 1) |>
ungroup() # n = 1.422
# Exporta banco em rds
saveRDS(baselv2020_rj, "base/lvrj2020.rds")
5.3 Divisões Administrativas
5.3.1 Distritos de São Paulo
O shapefile com os polígonos referentes aos distritos do município de São Paulo foram obtidos pelo pacote geobr
, que extrai esses dados do IBGE.
# Mapa de polígonos dos distritos de São Paulo. Fonte: IBGE via geobr
<- read_neighborhood(2010)
mapa_bairros <- mapa_bairros |> filter(name_muni == "São Paulo")
sp_distritos
# Exporta o objeto espacial em rds
saveRDS(sp_distritos, "base/mapa_distritos_sp.rds")
5.3.2 Rio de Janeiro
Para o caso do Rio de Janeiro, optamos por utilizar um shapefile com os setores censitários do município no ano de 2010 (que contém as informações dos bairros e subdistritos). A fonte dos dados também é o IBGE, e ele pode ser obtido na página de malha de setores censitários de 2010.
# Mapa de polígonos dos setores censitários do Rio de Janeiro.
<- st_read("base/rj_setores_censitarios/33SEE250GC_SIR.shp",
rj_sc options = "ENCODING=WINDOWS-1252") |>
filter(CD_GEOCODM == "3304557")
# Exporta o objeto espacial em rds
saveRDS(rj_sc, "base/mapa_setores_rj.rds")
5.4 Informações da sessão
Por fim, abaixo apresentamos as informações da sessão onde os dados foram compilados pela última vez, para que os usuários possam verificar se algum erro decorre de diferentes versões de pacotes.
sessionInfo()
# R version 4.2.2 (2022-10-31)
# Platform: aarch64-apple-darwin20 (64-bit)
# Running under: macOS 14.1.1
#
# locale:
# [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
#
# attached base packages:
# [1] stats graphics grDevices utils datasets methods base
#
# other attached packages:
# [1] readr_2.1.4 geobr_1.7.0 sf_1.0-13 electionsBR_0.3.3 janitor_2.2.0 dplyr_1.1.2 here_1.0.1
#
# loaded via a namespace (and not attached):
# [1] Rcpp_1.0.10 pillar_1.9.0 compiler_4.2.2 class_7.3-20 tools_4.2.2 bit_4.0.5
# [7] lubridate_1.9.2 lifecycle_1.0.3 tibble_3.2.1 timechange_0.2.0 pkgconfig_2.0.3 rlang_1.1.1
# [13] DBI_1.1.3 cli_3.6.1 rstudioapi_0.14 parallel_4.2.2 curl_5.0.0 e1071_1.7-13
# [19] withr_2.5.0 stringr_1.5.0 httr_1.4.5 hms_1.1.3 generics_0.1.3 vctrs_0.6.2
# [25] bit64_4.0.5 classInt_0.4-9 rprojroot_2.0.3 grid_4.2.2 tidyselect_1.2.0 snakecase_0.11.0
# [31] glue_1.6.2 data.table_1.14.8 R6_2.5.1 fansi_1.0.4 vroom_1.6.3 tzdb_0.3.0
# [37] magrittr_2.0.3 units_0.8-2 utf8_1.2.3 KernSmooth_2.23-20 stringi_1.7.12 proxy_0.4-27
# [43] crayon_1.5.2