1. Vá ao Repositório de Dados Eleitorais do TSE. Na página “Resultados” e no ano 2012, faça o download do arquivo “Votação nominal por município e zona” e descompacte-o.
2. Abre o arquivo para São Paulo (votacao_candidato_munzona_2012_SP.txt) em R com os nomes de colunas e o encoding corretos de acordo com a seção relevante de leaime.pdf.
library(tidyverse)
data <- read_delim("C:/Users/Jonny/Downloads/votacao_candidato_munzona_2012/votacao_candidato_munzona_2012_SP.txt",
delim = ";", locale = locale(encoding = "latin1"), col_names = c("DATA_GERACAO",
"HORA_GERACAO", "ANO_ELEICAO", "NUM_TURNO", "DESCRICAO_ELEICAO",
"SIGLA_UF", "SIGLA_UE", "CODIGO_MUNICIPIO", "NOME_MUNICIPIO", "NUMERO_ZONA",
"CODIGO_CARGO", "NUMERO_CAND", "SQ_CANDIDATO", "NOME_CANDIDATO",
"NOME_URNA_CANDIDATO", "DESCRICAO_CARGO", "COD_SIT_CAND_SUPERIOR",
"DESC_SIT_CAND_SUPERIOR", "CODIGO_SIT_CANDIDATO", "DESC_SIT_CANDIDATO",
"CODIGO_SIT_CAND_TOT", "DESC_SIT_CAND_TOT", "NUMERO_PARTIDO", "SIGLA_PARTIDO",
"NOME_PARTIDO", "SEQUENCIAL_LEGENDA", "NOME_COLIGACAO", "COMPOSICAO_LEGENDA",
"TOTAL_VOTOS"))
3. Lendo o leaime.pdf e observando as variáveis no banco de dados, o que representa uma observação (uma linha)? Ou seja, qual a unidade de análise aqui?
Cada linhha é o resultado da eleição para um candidato em uma zona eleitoral específico em um turno na eleição de 2012 em São Paulo.
4. Leia até o final as instruções e identifique quais variáveis serão necessárias para o resto do exercício. Tire do seu banco de dados as variáveis desnecesárias.
data <- data %>% select(NUM_TURNO, NOME_CANDIDATO, DESC_SIT_CAND_TOT, NOME_URNA_CANDIDATO,
SQ_CANDIDATO, CODIGO_MUNICIPIO, NOME_MUNICIPIO, NUMERO_ZONA, SIGLA_PARTIDO,
TOTAL_VOTOS, DESCRICAO_CARGO, NUMERO_CAND, NUMERO_PARTIDO)
5. Selecione apenas as linhas que contém resultados eleitorais para o primeiro turno da eleição do prefeito(a).
data_prefeito_turno_1 <- data %>% filter(DESCRICAO_CARGO == "PREFEITO" &
NUM_TURNO == 1)
data_prefeito_turno_1
6. Note que candidatos podem aparecer mais de uma vez na tabela em Q5 (porque existem múltiplas zonas em cada município). Usando identificadores únicos, identifique os candidatos distintos para o primeiro turno do prefeito. Explique no seu relatório quantos candidatos concorrem para prefeito no primeiro turno em 2012.
cands_prefeito_turno_1 <- data_prefeito_turno_1 %>% distinct(SQ_CANDIDATO)
num_cands_prefeito_turno_1 <- nrow(cands_prefeito_turno_1)
O número de candidatos que concorrem para prefeito no primeiro turno em 2012 em São Paulo é `r num_cands_prefeito_turno_1`
.
O número de candidatos que concorrem para prefeito no primeiro turno em 2012 em São Paulo é 2035.
7. No banco de dados de prefeitos no primeiro turno gerado na questão anterior, renomeie a variável com nome pouco claro DESC_SIT_CAND_TOT
para RESULTADO
data_prefeito_turno_1 <- data_prefeito_turno_1 %>% rename(RESULTADO = DESC_SIT_CAND_TOT)
8. No banco de dados de prefeitos no primeiro turno gerado na questão anterior, filtrar os dados para os candidatos que se candidataram com Nome de Urna ígual ao seu Nome completo, e identifique os candidatos únicos de novo. No seu relatório, explique qual porcentagem de todos os candidatos para prefeito no primeiro turno isso representa.
O porcentagem de candidatos para prefeito no primeiro turno com nome completo ígual ao nome de urna é `r round(Pct_nome_igual,2)`
.
O porcentagem de candidatos para prefeito no primeiro turno com nome completo ígual ao nome de urna é 5.7%.
9. Quantos dos candidatos identificados em Q8 foram eleitos no primeiro turno?
Dos `r nrow(cands_prefeito_turno_1_nome_igual)`
candidatos com nome completo ígual ao nome de urna, `r num_cands_nome_igual_eleito`
foram eleitos.
Dos 116 candidatos com nome completo ígual ao nome de urna, 39 foram eleitos.
10. Voltando para os dados de todos os candidatos no primeiro turno, vamos focar a nossa análise no município de São Paulo (código do TSE 71072). Ordene os dados por número de votos e identifique qual candidato recebeu o maior número de votos em qualquer zona da cidade.
data_prefeito_turno_1 %>% filter(CODIGO_MUNICIPIO == 71072) %>% arrange(-TOTAL_VOTOS) %>%
top_n(1, TOTAL_VOTOS)
O candidato para prefeito com a maior votação em uma zona no município de São Paulo no primeiro turno de 2012 é José Serra.
11. Usando a sua própria classificação, crie uma nova variável que descreve a ideologia de cada partido no banco de dados do município de São Paulo nas três categorias ‘Esquerda’, ‘Direita’ e ‘Outro’.
data_prefeito_turno_1 <- data_prefeito_turno_1 %>%
filter(CODIGO_MUNICIPIO==71072) %>%
mutate(Ideologia=case_when(SIGLA_PARTIDO %in% c("PDT","PV","PSOL","PTN",
"PT","PPS","PTB","PSB",
"PC do B","PT do B","PSTU",
"PCB","PPL","PCO","SD")~"Esquerda",
SIGLA_PARTIDO %in% c("PSD","PSDB","PRB","PRP",
"PMDB","DEM","PSC","PP",
"PRTB","PHS","PSL","PTC")~"Direita",
SIGLA_PARTIDO %in% c("PR","PMN","PT do B","PSDC")~"Outro"))
12. Crie uma variável que indica se o candidato no município de São Paulo recebeu mais de 10.000 votos na zona.
Existem `r cands_sp_maior_10000`
candidatos-zonas com mais de 10000 votos.
Existem 223 candidatos-zonas com mais de 10000 votos.
13. Voltando para os dados orginais, filtrar para os dados dos vereadores. Agora, imagine que não temos os dados do partido de cada candidato e queremos recuperar do NUMERO_CAND
, em que os primeiros dois digitos sempre refletem o número do partido do candidato. Divida a coluna NUMERO_CAND
em duas para criar uma coluna de NUM_PARTIDO
e outra de NUM_CAND_RESTANTE
.
14. Agora, unifique as colunas NUM_PARTIDO
e NUM_CAND_RESTANTE
criado em Q9. O resultado deve ser ígual à coluna original NUMERO_CAND
.
data_vereador <- data_vereador %>% unite(NUMERO_CAND_NOVO, c(NUM_PARTIDO,
NUM_CAND_RESTANTE))
data_vereador
15. Limpe o seu script e Knit para um documento de HTML, por exemplo adicionando comentários, verificando que as respostas fazem sentidos, inserindo in-line código, tirando o código, warnings e mensagens do documento final, e formatando as tabelas melhores com df_print: paged
no cabeçalho.