Desafio 1: Respostas Sugeridas

Roteiro

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.

cands_prefeito_turno_1_nome_igual <- data_prefeito_turno_1 %>% filter(NOME_CANDIDATO == 
    NOME_URNA_CANDIDATO) %>% distinct(SQ_CANDIDATO)

Pct_nome_igual <- 100 * (nrow(cands_prefeito_turno_1_nome_igual)/nrow(cands_prefeito_turno_1))

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?

num_cands_nome_igual_eleito <- data_prefeito_turno_1 %>% filter(NOME_CANDIDATO == 
    NOME_URNA_CANDIDATO) %>% filter(RESULTADO == "ELEITO") %>% distinct(SQ_CANDIDATO) %>% 
    nrow()

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.

data_prefeito_turno_1 <- data_prefeito_turno_1 %>% filter(CODIGO_MUNICIPIO == 
    71072) %>% mutate(Mais_de_10000_votos = case_when(TOTAL_VOTOS > 10000 ~ 
    TRUE, TOTAL_VOTOS <= 10000 ~ FALSE))

cands_sp_maior_10000 <- data_prefeito_turno_1 %>% filter(Mais_de_10000_votos == 
    TRUE) %>% nrow()

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.

data_vereador <- data %>% filter(DESCRICAO_CARGO == "VEREADOR") %>% separate(NUMERO_CAND, 
    into = c("NUM_PARTIDO", "NUM_CAND_RESTANTE"), sep = 2)
data_vereador

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.