Skip to content

Instantly share code, notes, and snippets.

@sergiospagnuolo
Created July 19, 2019 19:09
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sergiospagnuolo/176ef9efaac45c4d2b4ba4ed8eddf9cb to your computer and use it in GitHub Desktop.
Save sergiospagnuolo/176ef9efaac45c4d2b4ba4ed8eddf9cb to your computer and use it in GitHub Desktop.
library(tidyverse)
# Distribuição de contribuintes previdenciários
# ref http://dados.gov.br/dataset/estatisticas-contrib-pessoas-fisicas-por-uf/resource/6b498c82-dbd9-42b4-8a7e-d04967c6cff1
# manual das colunas http://www.previdencia.gov.br/dados-abertos/aeps-2007-anuario-estatistico-da-previdencia-social-2007/anuario-estatistico-da-previdencia-social-2007-contribuintes-da-previdencia-social/
d <- read.csv("CTB21.csv", header = T, fileEncoding = "ISO-8859-1", dec = ",")
ufs_abrev <- c("Acre", "Alagoas", "Amazonas", "Amapá", "Bahia", "Ceará", "Distrito Federal", "Espírito Santo", "Goiás", "Maranhão", "Mato Grosso", "Mato Grosso do Sul", "Minas Gerais", "Pará", "Paraíba", "Paraná", "Pernambuco", "Piauí", "Rio de Janeiro", "Rio Grande do Norte", "Rondônia", "Rio Grande do Sul", "Roraima", "Santa Catarina", "Sergipe", "São Paulo", "Tocantins")
ufs_siglas <- c("AC", "AL", "AM", "AP", "BA", "CE", "DF", "ES", "GO", "MA", "MT", "MS", "MG", "PA", "PB", "PR", "PE", "PI", "RJ", "RN", "RO", "RS", "RR", "SC", "SE", "SP", "TO" )
ufs <- data.frame(ufs_abrev, ufs_siglas)
d$Ano <- ymd(d$Ano, truncated = 2L)
# Número médio mensal de contribuintes da Previdência
geral <- d %>% group_by(Ano) %>%
summarise(sum(Número.Médio.Mensal.Contrib))
colnames(geral)[2] = "valor"
grafico1 <- geral %>%
ggplot(aes(Ano, valor)) +
geom_line(color="purple") +
geom_point(color="purple") +
scale_x_date(breaks = scales::pretty_breaks(n = 10)) +
scale_y_continuous(labels=function(x) format(x, big.mark = ",", scientific = FALSE)) +
labs(title="Número médio mensal de contribuintes da Previdência",
subtitle = "Soma de todas as UFs. Média calculada pela quantidade de meses trabalhados no ano\npor contribuinte, dividida por 12",
x="",
y="número de contribuintes",
caption = "Fonte: Previdência social, via Dados.gov.br")
grafico1 + tema()
# Por UF
por_uf <- d %>% group_by(Ano, Unidade.da.Federação) %>%
summarise(sum(Número.Médio.Mensal.Contrib))
colnames(por_uf)[2] = "UF"
colnames(por_uf)[3] = "valor"
por_uf <- full_join(por_uf, ufs, by = c("UF" = "ufs_abrev"))
grafico2 <- por_uf %>%
filter(UF != "Ignorado") %>%
ggplot(aes(Ano, valor)) +
geom_line(color="orange") +
geom_point(color="orange") +
facet_wrap(. ~ ufs_siglas, ncol=8, scales = "free") +
scale_x_date(breaks = scales::pretty_breaks(n = 2)) +
scale_y_continuous(labels=function(x) format(x, big.mark = ",", scientific = FALSE)) +
labs(title="Número médio mensal de contrib. da Previdência, por UF",
subtitle = "Calculado pela quantidade de meses trabalhados no ano por contribuinte, dividida por 12",
x="",
y="",
caption = "Fonte: Previdência social, via Dados.gov.br ")
grafico2 + tema()
# valores totais em números financeiros
library(lubridate)
# valores totais
financ <- d %>% group_by(Ano) %>%
summarise(sum(Valor..das.Remunerações.R.))
colnames(financ)[2] = "valor bruto"
financ$Ano <- ymd(financ$Ano, truncated = 2L)
financ[3] <- deflate(financ$'valor bruto', financ$Ano , "05/2019", "inpc")
colnames(financ)[3] = "valor ajustado"
grafico3 <- financ %>%
ggplot() +
geom_line(aes(Ano, `valor bruto`), color="#008596") +
geom_point(aes(Ano, `valor bruto`), color="#008596") +
geom_line(aes(Ano, `valor ajustado`), color="#d73027") +
geom_point(aes(Ano, `valor ajustado`), color="#d73027") +
scale_x_date(breaks = scales::pretty_breaks(n = 10)) +
scale_y_continuous(labels=function(x) format(x, big.mark = ",", scientific = FALSE)) +
labs(title="Valor das Remunerações da Previdência ",
subtitle = "Valores brutos (verde) e ajustados (vermelho)",
x="",
y="R$",
caption = "Fonte: Previdência social, via Dados.gov.br")
grafico3 + tema()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment