Skip to content

Instantly share code, notes, and snippets.

@lgelape
Created April 1, 2020 18:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lgelape/7022068fe55e18c7a100cfceb01a70d9 to your computer and use it in GitHub Desktop.
Save lgelape/7022068fe55e18c7a100cfceb01a70d9 to your computer and use it in GitHub Desktop.
nucleo_avaliacao_lideres
###################################################################################################
##### Codigo para limpeza dos dados e producao de graficos sobre avaliacao de chefes de Estado
##### Nucleo Jornalismo
###################################################################################################
# Pacotes
library(dplyr)
library(ggplot2)
###################################################################################################
# Banco principal
load("pesquisas_chefes_estado.RData")
###################################################################################################
### Organizar dados: Italia
# Calcular os valores com base 100 (incluindo nao sabe), pois os resultados nao incluem o nao sabe.
# Categorizar as variaveis em confia/nao confia e somar os novos resultados.
italia <- banco %>%
filter(pais == "Itália") %>%
group_by(data_fim) %>%
mutate(valor_naosabe = ifelse(tipo_resposta == "nao sabe", percentual, 0),
valor_naosabe = sum(valor_naosabe)) %>%
ungroup() %>%
mutate(novo_percentual = round(((100-valor_naosabe)*percentual)/100, digits = 0)) %>%
select(-c(percentual, valor_naosabe)) %>%
group_by(data_fim) %>%
mutate(tipo_resposta2 = ifelse(tipo_resposta %in% c("suficiente", "muita"), "confia", tipo_resposta),
tipo_resposta2 = ifelse(tipo_resposta %in% c("nenhuma", "pouca"), "nao confia", tipo_resposta2)) %>%
ungroup() %>%
group_by(data_fim, tipo_resposta2) %>%
mutate(percentual = sum(novo_percentual)) %>%
select(-c(novo_percentual, tipo_resposta)) %>%
rename(tipo_resposta = tipo_resposta2) %>%
distinct()
###################################################################################################
### Organizar dados: Chile
# Agrupar nao respondeu + nem positivo nem negativo e somar para obter o novo valor
chile <- banco %>%
filter(pais == "Chile") %>%
mutate(tipo_resposta2 = case_when(tipo_resposta == "aprova" ~ "aprova",
tipo_resposta == "desaprova" ~ "desaprova",
tipo_resposta == "nao_respondeu" ~ "nao respondeu / nem nem",
tipo_resposta == "nem_nem" ~ "nao respondeu / nem nem")) %>%
group_by(data_fim, tipo_resposta2) %>%
mutate(novo_percentual = sum(percentual)) %>%
ungroup() %>%
select(-c(percentual, tipo_resposta)) %>%
rename(tipo_resposta = tipo_resposta2, percentual = novo_percentual) %>%
distinct()
###################################################################################################
### Organizar dados: Franca
# Agrupar os resultados em favoravel e desfavoravel
franca <- banco %>%
filter(pais == "França") %>%
mutate(tipo_resposta2 = case_when(tipo_resposta == "um pouco favoravel" ~ "favoravel",
tipo_resposta == "muito favoravel" ~ "favoravel",
tipo_resposta == "um pouco desfavoravel" ~ "desfavoravel",
tipo_resposta == "muito desfavoravel" ~ "desfavoravel",
tipo_resposta == "nao respondeu" ~ "nao respondeu")) %>%
group_by(data_fim, tipo_resposta2) %>%
mutate(novo_percentual = sum(percentual)) %>%
ungroup() %>%
select(-c(percentual, tipo_resposta)) %>%
rename(tipo_resposta = tipo_resposta2, percentual = novo_percentual) %>%
distinct()
###################################################################################################
# Criar banco com as informacoes agrupadas
# Categorizar as respostas em positivo, negativo e outros
# Criar labels para produzir o grafico
banco_novo <- banco %>%
filter(pais != "Itália" & pais != "Chile" & pais != "França") %>%
bind_rows(italia, chile, franca) %>%
mutate(valencia = case_when(tipo_resposta == "aprova" ~ "Positivo",
tipo_resposta == "contrario" ~ "Negativo",
tipo_resposta == "confia" ~ "Positivo",
tipo_resposta == "desaprova" ~ "Negativo",
tipo_resposta == "desfavoravel" ~ "Negativo",
tipo_resposta == "favoravel" ~ "Positivo",
tipo_resposta == "insatisfeito" ~ "Negativo",
tipo_resposta == "nao aprova" ~ "Negativo",
tipo_resposta == "nao confia" ~ "Negativo",
tipo_resposta == "nao respondeu" ~ "Outros",
tipo_resposta == "neutro ou nao tem opiniao" ~ "Outros",
tipo_resposta == "nao respondeu / nem nem" ~ "Outros",
tipo_resposta == "nao sabe / nao respondeu" ~ "Outros",
tipo_resposta == "nao sabe" ~ "Outros",
tipo_resposta == "sem opiniao" ~ "Outros",
tipo_resposta == "satisfeito" ~ "Positivo"),
pais_label = factor(pais, levels = c("Brasil", "Chile", "EUA", "França", "Itália", "Portugal", "Grã-Bretanha"),
labels = c("Brasil\nAprovação da Administração",
"Chile\nAprovação do Presidente",
"EUA\nAprovação do Presidente",
"França\nAvaliação do Presidente",
"Itália\nConfiança no Primeiro-Ministro",
"Portugal\nAprovação do Governo",
"Grã-Bretanha\nSatisfação com o Primeiro-Ministro")))
###################################################################################################
##### Gerar grafico com painel de paises
banco_novo %>%
ggplot(aes(x = data_fim, y = percentual, color = valencia)) +
geom_point(size = 0.5) +
geom_line() +
geom_vline(aes(xintercept = as.Date(dia_caso1)), linetype = "dotted") +
facet_wrap(~ pais_label) +
theme_light() +
theme(plot.title = element_text(hjust = 0.5, size = 12),
plot.caption = element_text(hjust = 0.5, size = 10),
axis.text.x = element_text(hjust = 0.5, size = 7),
legend.position = "bottom",
legend.direction = "horizontal",
legend.title = element_text(size = 12)) +
scale_x_date(limits = c(as.Date("2019-06-01"),
as.Date("2020-04-01")),
breaks = c(as.Date("2019-06-01"),
as.Date("2019-07-01"),
as.Date("2019-08-01"),
as.Date("2019-09-01"),
as.Date("2019-10-01"),
as.Date("2019-11-01"),
as.Date("2019-12-01"),
as.Date("2020-01-01"),
as.Date("2020-02-01"),
as.Date("2020-03-01"),
as.Date("2020-04-01")),
labels = c("06/\n2019", "",
"08/\n2019", "",
"10/\n2019", "",
"12/\n2019", "",
"02/\n2019", "",
"04/\n2020")) +
labs(title = "Avaliação de líderes e governos mundiais",
caption = "Fonte: produzido com dados de Quaest (Brasil), Cadem (Chile), Gallup (EUA),\nIpsos/Le Point (França), Istituto Axè (Itália), Pitagórica (Portugal) e Ipsos-Mori (Grã-Bretanha)",
x = "Data", y = "%")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment