O prazo para entregar Desafio 3 por email com título “[FLS6397] - D3” à minha conta é 14h, 28/05/2021, antes da próxima aula. Por favor entregue (i) o arquivo .Rmd, e (ii) o arquivo .html.
Respostas Sugeridas para Desafio 3 aqui
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.
Vamos trabalhar de novo com os dados eleitorais do Tribunal Superior Eleitoral, o qual disponibiliza dados sobre os resultados eleitorais separadamente dos dados sobre os candidatos. Baixe os dados de Resultados e Candidatos de Roraima. Observe que os dados são processados (não sendo os originais) e contém apenas a informação de vereadores.
Abra os dois bancos em R com o separador apropriado (note que o formato é um pouco diferente dos arquivos no desafio 1 - o encoding é o padrão, UTF8. Logo, não é preciso mexer nisso).
library("tidyverse")
library("tidylog")
resultados <- read_delim("resultados_2016_RR.csv",
delim=";")
candidatos <- read_delim("candidatos_2016_RR.csv",
delim=";")
candidatos %>% distinct(SQ_CANDIDATO)
resultados %>% distinct(SQ_CANDIDATO, CD_MUNICIPIO, NR_ZONA) #Pode excluir CD_MUNICIPIO, mas fica mais claro incluir
#SQ_CANDIDATO
anti_join
para identificar 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 identificar se há candidatos faltando no banco de dados de resultados. 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="SQ_CANDIDATO")
Os candidatos sem resultados são aqueles ‘inaptos’ para a eleição.
candidatos <- candidatos %>% select(SQ_CANDIDATO, NM_CANDIDATO, NM_UE, SG_PARTIDO,
NR_IDADE_DATA_POSSE, DS_GENERO, DS_GRAU_INSTRUCAO,
DS_COR_RACA)
left_join()
apropriado.resultados %>% left_join(candidatos, by="SQ_CANDIDATO")
left_join()
apropriado para incorporar os dados dos candidatos.resultados_totais_candidatos <- resultados_totais %>% left_join(candidatos, by="SQ_CANDIDATO")
candidatos_resultados_totais <- candidatos %>% left_join(resultados_totais, by="SQ_CANDIDATO")
#OU
candidatos_resultados_totais <- resultados_totais %>% right_join(candidatos, by="SQ_CANDIDATO")
QT_VOTOS_NOMINAIS
foi preenchida em 6(a) para os candidatos que não receberam votos no banco resultados? Sabendo que esses candidatos não receberam voto, recodifique a coluna para inserir zero votos nos locais apropriados da coluna QT_VOTOS_NOMINAIS
.NM_UE
).Escolha 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 vertical e deixar mais visível.
resultados_totais_candidatos %>%
ggplot() +
geom_bar(aes(x=NM_UE)) +
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. Prepare um gráfico apropriado, com título, rótulos nos eixos e aplique um tema simples da sua escolha.resultados_totais_candidatos %>%
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()
resultados_totais_candidatos %>% group_by(NM_UE, DS_GENERO) %>%
tally() %>%
ggplot() +
geom_col(aes(x=NM_UE, 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
.sucesso_por_genero_mun %>%
filter(DS_GENERO=="FEMININO" & Eleito==1) %>%
ggplot() +
geom_col(aes(x=NM_UE, y=Pct_eleito)) +
ggtitle("O Porcentagem de Candidatos Femininos Eleitos por Município") +
xlab("Município") +
ylab("% de Candidatos Eleitos") +
theme_classic() +
theme(axis.text.x = element_text(angle = 90))
sucesso_por_genero_mun %>%
filter(Eleito==1) %>%
ggplot() +
geom_col(aes(x=NM_UE, 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 <- sucesso_por_genero_mun %>% filter(Eleito==1) %>%
select(-n) %>%
pivot_wider(names_from="DS_GENERO",
values_from="Pct_eleito") %>%
filter(FEMININO>MASCULINO) %>%
pull(NM_UE)
O município em que as mulheres têm uma maior taxa de sucesso que os homens é CAROEBE.
resultados_totais_candidatos %>% group_by(NM_UE, DS_GENERO) %>%
tally() %>%
ggplot() +
geom_tile(aes(x=DS_GENERO, y=NM_UE, 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 faça sentido e incorpore valores de idade possíveis. Formate o seu gráfico.resultados_totais_candidatos %>%
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()
resultados_totais_candidatos %>%
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()
resultados_totais_candidatos %>%
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))
candidatos_idade_media_votos %>%
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()
candidatos_idade_genero_media_votos <- resultados_totais_candidatos %>%
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))
candidatos_idade_genero_media_votos %>%
ggplot() +
geom_line(aes(x=NR_IDADE_DATA_POSSE, y=Media_Pct_Votos, group=DS_GENERO, colour=DS_GENERO))
IDH <- tibble(NM_UE=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))
anti_join()
para verificar se existe um identificador comum e completo para os dois bancos de resultados por partido e IDH. Corrija os erros para que todas as observações possam ser cruzadas.left_join()
para juntar os dados de voto por partido de questão (a) com a tabela de HDI de questão (b).IDH <- IDH %>% mutate(NM_UE=case_when(NM_UE=="BOAVISTA"~"BOA VISTA",
NM_UE=="RORAINOPOLIS"~"RORAINÓPOLIS",
TRUE~NM_UE))
resultados_totais_partidos_IDH <- resultados_totais_partidos %>%
left_join(IDH, by="NM_UE")
resultados_totais_partidos_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()
resultados_totais_partidos_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()
resultados_totais_partidos_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()