O prazo para entregar Desafio 3 por email com título “[FLS6397] - D3” à minha conta é 14h, 08/05/2020, antes da próxima aula. Por favor entregue (i) o arquivo .Rmd, e (ii) o arquivo .html.
[Atualizada no dia 27/04/20 para inserir Q4(b) com código fornecido, resolvendo o problema de duplicação de vereadores por zona nas questões de número de candidatos]
Siga as instruções abaixo. Documente todos os seus passos em um script. Comente no seu script todos os seus passos e explique a si mesma(o) suas escolhas e estratégias. Se você se beneficiou da assistência de outra pessoa, sempre reconheça isso em comentários no código.
Na aba de ‘resultados’, faça o download do arquivo “Votação nominal por município e zona” para 2016 e descompacte-o.
Na aba de ‘candidatos’, faça o download do arquivo “Candidatos” para 2016 e descompacte-o.
Dos arquivos descompactados, abre os dois bancos para Roraima (RR) em R com os parâmetros apropriados (note que o formato é um pouco diferente dos arquivos no desafio 1). Para detalhes sobre as colunas, veja o parte apropriado do documento leiame.pdf nos arquivos.
resultados <- read_delim("C:/Users/Jonny/Downloads/votacao_candidato_munzona_2016/votacao_candidato_munzona_2016_RR.csv",
delim=";",
locale=locale(encoding="latin1"))
candidatos <- read_delim("C:/Users/Jonny/Downloads/consulta_cand_2016/consulta_cand_2016_RR.csv",
delim=";",
locale=locale(encoding="latin1"))
Identifique a unidade de análise do banco de candidatos - o que repesenta cada observação/linha? Quais variáveis identificam cada linha exclusivamente? (Cuidado: o número do candidato (NR_CANDIDATO
) não é único para cada candidato).
Identifique a unidade de análise do banco de resultados - o que repesenta cada observação/linha? Quais variáveis identificam cada linha exclusivamente?
candidatos %>% distinct(SQ_CANDIDATO)
resultados %>% distinct(SQ_CANDIDATO, CD_MUNICIPIO, NR_ZONA) #CD_CARGO e NR_TURNO são opcionais
#SQ_CANDIDATO
anti_join
para identificador se há resultados que faltam detalhes do seu candidato no banco de dados de candidatos.
resultados %>% anti_join(candidatos, by="SQ_CANDIDATO")
anti_join
para identificador se há candidatos faltando no banco de dados de resultados. (Bonus: Investigando as colunas do resultado de anti_join
, você pode identificar porque eles não existem no banco de resultados?).
candidatos %>% anti_join(resultados, by=c("SQ_CANDIDATO"))
Candidatos: SQ_CANDIDATO, NM_CANDIDATO, SG_PARTIDO, NR_IDADE_DATA_POSSE, DS_GENERO, DS_GRAU_INSTRUCAO, DS_COR_RACA
Resultados: SQ_CANDIDATO, NM_MUNICIPIO, NR_ZONA, DS_CARGO, NR_TURNO, DS_CARGO, DS_SIT_TOT_TURNO, QT_VOTOS_NOMINAIS
candidatos <- candidatos %>% select(SQ_CANDIDATO, NM_CANDIDATO, SG_PARTIDO,
NR_IDADE_DATA_POSSE, DS_GENERO, DS_GRAU_INSTRUCAO,
DS_COR_RACA)
resultados <- resultados %>% select(SQ_CANDIDATO, NM_MUNICIPIO, NR_ZONA, DS_CARGO,
NR_TURNO, DS_CARGO, DS_SIT_TOT_TURNO,
QT_VOTOS_NOMINAIS)
2*. Por algum motivo, queremos calcular um resumo do total de votos recebidos por cada candidato em todas as eleições de 2016 - todas as zonas, todos os turnos, etc.
Agregar o seu banco de resultados para ter uma linha por candidato resumindo o seu número de votos total.
Execute um join do tipo apropriado para criar uma tabela de todos os candidatos que se inscreveram para a eleição com os seus dados pessoais, incluindo o número de votos total calculado em (a).
resultados_cand <- resultados %>% group_by(SQ_CANDIDATO) %>%
summarize(Tot_Votos=sum(QT_VOTOS_NOMINAIS, na.rm=T))
candidatos %>% left_join(resultados_cand, by="SQ_CANDIDATO")
combinado <- resultados %>% left_join(candidatos, by=c("SQ_CANDIDATO"))
combinado_vereador <- combinado %>% filter(DS_CARGO=="Vereador")
combinado_vereador <- combinado_vereador %>%
group_by(SQ_CANDIDATO, NM_MUNICIPIO, DS_CARGO, NR_TURNO, DS_SIT_TOT_TURNO,
NM_CANDIDATO, SG_PARTIDO, NR_IDADE_DATA_POSSE, DS_GENERO,
DS_GRAU_INSTRUCAO, DS_COR_RACA) %>%
summarize(QT_VOTOS_NOMINAIS=sum(QT_VOTOS_NOMINAIS, na.rm=T)) %>%
ungroup()
Escolhe um tipo de gráfico apropriado e crie o gráfico.
Adicione um título ao seu gráfico, e rótulos nos eixos.
Use o código da camada + theme(axis.text.x = element_text(angle = 90))
para virar o texto do município para deixar mais visível.
combinado_vereador %>%
ggplot() +
geom_bar(aes(x=NM_MUNICIPIO)) +
ggtitle("Número de Candidatos por Município") +
xlab("Município") +
ylab("Número de Candidatos") +
theme(axis.text.x = element_text(angle = 90))
DS_GENERO
) no estado inteiro, usando o banco de dados de vereadores de questão 4. Prepare um gráfico apropriado, com título, rótulos nos eixos e aplique um tema simples da sua escolha.
combinado_vereador %>%
ggplot() +
geom_bar(aes(x=DS_GENERO)) +
ggtitle("Número de Candidatos por Gênero") +
xlab("Gênero") +
ylab("Número de Candidatos") +
theme_classic()
combinado_vereador %>% group_by(NM_MUNICIPIO, DS_GENERO) %>%
tally() %>%
ggplot() +
geom_col(aes(x=NM_MUNICIPIO, y=n, fill=DS_GENERO), position="fill") +
ggtitle("O Porcentagem de Candidatos por Município e Gênero") +
xlab("Município") +
ylab("Porcentagem de Candidatos") +
theme(axis.text.x = element_text(angle = 90)) +
theme(legend.position="bottom")
DS_SIT_TOT_TURNO
), e calcule a taxa de sucesso (% eleito) de candidatos por município e gênero.
combinado_vereador_sucesso <- combinado_vereador %>%
mutate(Eleito=case_when(DS_SIT_TOT_TURNO %in%
c("ELEITO POR QP","ELEITO POR MÉDIA", "ELEITO")~1,
TRUE~0)) %>%
group_by(NM_MUNICIPIO, DS_GENERO, Eleito) %>%
tally() %>%
ungroup() %>%
complete(NM_MUNICIPIO, DS_GENERO, Eleito, fill=list(n=0)) %>%
group_by(NM_MUNICIPIO, DS_GENERO) %>%
mutate(Pct_eleito=100*(n/sum(n,na.rm=T)))
combinado_vereador_sucesso %>%
filter(DS_GENERO=="FEMININO" & Eleito==1) %>%
ggplot() +
geom_col(aes(x=NM_MUNICIPIO, y=Pct_eleito)) +
ggtitle("O Porcentagem de Candidatos Eleitos por Município e Gênero") +
xlab("Município") +
ylab("% de Candidatos Eleitos") +
theme_classic() +
theme(axis.text.x = element_text(angle = 90))
combinado_vereador_sucesso %>%
filter(Eleito==1) %>%
ggplot() +
geom_col(aes(x=NM_MUNICIPIO, y=Pct_eleito, fill=DS_GENERO), position="dodge") +
ggtitle("O Porcentagem de Candidatos Eleitos por Município e Gênero") +
xlab("Município") +
ylab("% de Candidatos Eleitos") +
theme_classic() +
theme(axis.text.x = element_text(angle = 90))
mun_sucesso_feminino <- combinado_vereador_sucesso %>% filter(Eleito==1) %>%
select(-n) %>%
pivot_wider(names_from="DS_GENERO",
values_from="Pct_eleito") %>%
filter(FEMININO>MASCULINO) %>%
pull(NM_MUNICIPIO)
O município em que as mulheres têm uma maior taxa de sucesso que os homens é CAROEBE.
combinado_vereador %>% group_by(NM_MUNICIPIO, DS_GENERO) %>%
tally() %>%
ggplot() +
geom_tile(aes(x=DS_GENERO, y=NM_MUNICIPIO, fill=n)) +
scale_fill_gradient(low="#efedf5", high="#3f007d") +
ggtitle("Número de Candidatos por Município e Gênero") +
xlab("Município") +
ylab("Número de Candidatos") +
theme_classic()
NR_IDADE_DATA_POSSE
). Faça qualquer ajuste necessário para que o seu gráfico faz sentido e incorpora valores de idade possíveis. Formate o seu gráfico.
combinado_vereador %>%
mutate(NR_IDADE_DATA_POSSE=case_when(NR_IDADE_DATA_POSSE==999~NA_real_,
TRUE~NR_IDADE_DATA_POSSE)) %>%
ggplot() +
geom_histogram(aes(x=NR_IDADE_DATA_POSSE)) +
ggtitle("Histograma de Candidatos por Idade") +
xlab("Idade") +
ylab("Número de Candidatos") +
theme_classic()
combinado_vereador %>%
mutate(NR_IDADE_DATA_POSSE=case_when(NR_IDADE_DATA_POSSE==999~NA_real_,
TRUE~NR_IDADE_DATA_POSSE)) %>%
ggplot() +
geom_histogram(aes(x=NR_IDADE_DATA_POSSE, fill=DS_GENERO),
position="dodge") +
ggtitle("Histograma de Candidatos por Idade") +
xlab("Idade") +
ylab("Número de Candidatos") +
theme_classic()
combinado_vereador %>%
mutate(NR_IDADE_DATA_POSSE=case_when(NR_IDADE_DATA_POSSE==999~NA_real_,
TRUE~NR_IDADE_DATA_POSSE)) %>%
ggplot() +
geom_histogram(aes(x=NR_IDADE_DATA_POSSE, fill=DS_GENERO)) +
ggtitle("Histograma de Candidatos por Idade") +
xlab("Idade") +
ylab("Número de Candidatos") +
theme_classic() +
facet_grid(rows=vars(DS_COR_RACA), cols=vars(DS_GENERO))
combinado_vereador <- combinado_vereador %>%
group_by(NM_MUNICIPIO) %>%
mutate(Pct_Votos=100*(QT_VOTOS_NOMINAIS/sum(QT_VOTOS_NOMINAIS,na.rm=T)))
combinado_vereador_votos_idade <- combinado_vereador %>%
mutate(NR_IDADE_DATA_POSSE=case_when(NR_IDADE_DATA_POSSE==999~NA_real_,
TRUE~NR_IDADE_DATA_POSSE)) %>%
group_by(NR_IDADE_DATA_POSSE) %>%
summarize(Media_Pct_Votos=mean(Pct_Votos,na.rm=T))
combinado_vereador_votos_idade %>%
ggplot() +
geom_line(aes(x=NR_IDADE_DATA_POSSE, y=Media_Pct_Votos)) +
ggtitle("Porcentagem de Votos de Candidatos por Idade") +
xlab("Idade") +
ylab("Média de Porcentagem de Votos") +
theme_classic()
combinado_vereador_votos_idade_genero <- combinado_vereador %>%
mutate(NR_IDADE_DATA_POSSE=case_when(NR_IDADE_DATA_POSSE==999~NA_real_,
TRUE~NR_IDADE_DATA_POSSE)) %>%
group_by(DS_GENERO, NR_IDADE_DATA_POSSE) %>%
summarize(Media_Pct_Votos=mean(Pct_Votos,na.rm=T))
combinado_vereador_votos_idade_genero %>%
ggplot() +
geom_line(aes(x=NR_IDADE_DATA_POSSE, y=Media_Pct_Votos, group=DS_GENERO, colour=DS_GENERO))
combinado_vereador_votos_idade_genero_maior <- combinado_vereador_votos_idade_genero %>%
group_by(DS_GENERO) %>%
arrange(DS_GENERO, -Media_Pct_Votos) %>%
top_n(1, Media_Pct_Votos)
combinado_vereador_mun_partido <- combinado_vereador %>% group_by(NM_MUNICIPIO, SG_PARTIDO) %>%
summarize(Tot_Votos=sum(QT_VOTOS_NOMINAIS, na.rm=T)) %>%
group_by(NM_MUNICIPIO) %>%
mutate(Pct_Votos=100*(Tot_Votos/sum(Tot_Votos,na.rm=T)))
IDH <- tibble(NM_MUNICIPIO=c("ALTO ALEGRE", "AMAJARI", "BOAVISTA", "BONFIM",
"CANTÁ", "CARACARAÍ", "CAROEBE", "IRACEMA", "MUCAJAÍ",
"NORMANDIA", "PACARAIMA", "RORAINOPOLIS",
"SÃO JOÃO DA BALIZA", "SÃO LUIZ", "UIRAMUTÃ"),
IDH=c(0.542, 0.484, 0.752, 0.626, 0.619, 0.624, 0.639, 0.582, 0.665,
0.594, 0.650, 0.619, 0.655, 0.649, 0.453))
combinado_vereador_mun_partido %>% anti_join(IDH, by="NM_MUNICIPIO") %>%
distinct(NM_MUNICIPIO) #Boa Vista e Roraionopolis não cruzados
IDH <- IDH %>% mutate(NM_MUNICIPIO=case_when(NM_MUNICIPIO=="BOAVISTA"~"BOA VISTA",
NM_MUNICIPIO=="RORAINOPOLIS"~"RORAINÓPOLIS",
TRUE~NM_MUNICIPIO))
combinado_vereador_mun_partido_IDH <- combinado_vereador_mun_partido %>%
left_join(IDH, by="NM_MUNICIPIO")
combinado_vereador_mun_partido_IDH %>%
filter(SG_PARTIDO=="PMDB") %>%
ggplot() +
geom_point(aes(x=IDH, y=Pct_Votos)) +
ggtitle("IDH do Município e Porcentagem de Votos do PMDB") +
xlab("IDH") +
ylab("Porcentagem de Votos do PMDB") +
theme_classic()
combinado_vereador_mun_partido_IDH %>%
filter(SG_PARTIDO=="PMDB") %>%
ggplot() +
geom_point(aes(x=IDH, y=Pct_Votos, size=Tot_Votos)) +
ggtitle("IDH do Município e Porcentagem de Votos do PMDB") +
xlab("IDH") +
ylab("Porcentagem de Votos do PMDB") +
theme_classic()
combinado_vereador_mun_partido_IDH %>%
filter(SG_PARTIDO=="PMDB") %>%
ggplot() +
geom_point(aes(x=IDH, y=Pct_Votos, colour=Tot_Votos)) +
scale_colour_gradient(low="#fee6ce", high="#a63603") +
ggtitle("IDH do Município e Porcentagem de Votos do PMDB") +
xlab("IDH") +
ylab("Porcentagem de Votos do PMDB") +
theme_classic()