knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.path = "man/figures/README-", out.width = "100%" ) library(pnadc)
O objetivo desse pacote é automatizar algumas análises feitas com os microdados da PNAD Contínua.
Ainda em fase MEGA-EXPERIMENTAL. A API VAI MUDAR
install.packages("pnadc")
O pacote foi pensado para que possa ser usado assim:
Há funções de utilidade para baixar os dados da PNAD e para extrair os arquivos.
library(pnadc) # Vai baixar numa pasta "dados" na raiz do projeto. # Isso não vai ser possível de alterar pelo pacote para dar uma # estrutura de trabalho homogênea e que possa ser confiada download_pnad(2019, 4) unzip_pnad(2019, 4)
Assim como para leitura dos dados com as variaveis padronizadas.
pnad2019_4 <- ler_pnad(2019, 4)
A PNAD é uma pesquisa estratificada e em geral é analisada usando o pacote
survey
. Mas esse pacote é muito lento para realizar alguns cálculos e
principalemente para fazer análises exploratórias.
pnad2019_4 %>% # Na verdade um contador respeitando os pesos participacao(sexo) # Deve funcionar com group_by # Ainda não funciona library(dplyr) pnad2019_4 %>% group_by(vinculo_primario) %>% participacao(sexo) pnad2019_4 %>% tidyr::nest(data = -vinculo_primario) %>% mutate(prop = purrr::map(data, participacao, sexo)) %>% select(-data) %>% tidyr::unnest(prop)
O ideal era que essas funções de utilidade não se contivessem apenas a dados relativos mas também fossem capazes de somar totais. ```r pnad2019_4 %>% # Na verdade um somador respeitando os pesos e as projeções de pop total(sexo) # Deve funcionar com group_by pnad2019_4 %>% grou_by(regiao) %>% total(sexo)
O pacote possibilita fazer coisas como
pnad <- tibble::tibble( ano = c(rep(2012:2019, each = 4), 2020), trimestre = rep(1:4, length.out = 33) ) %>% mutate(dado = purrr::map2(ano, trimestre, ler_pnad)) %>% pull(dado) %>% map_df(~nest(.x, dado = -c(ano, trimestre, vinculo_primario))) mais_comum <- function(x) { resp <- sort(table(x), decreasing = TRUE) if (length(resp) == 0) return("") names(resp)[[1]] } estats <- pnad %>% group_by(ano, trimestre, vinculo_primario) %>% mutate( brancos = map_dbl(dado, ~weighted.mean(.x$cor == 1, .x$peso_posestrat, na.rm = TRUE)), homens = map_dbl(dado, ~weighted.mean(.x$sexo == 1, .x$peso_posestrat, na.rm = TRUE)), idade = map_dbl(dado, ~weighted.mean(.x$idade, .x$peso_posestrat, na.rm = TRUE)), renda = map_dbl(dado, ~weighted.mean(.x$rendimento_primario, .x$peso_posestrat, na.rm = TRUE)), jornada = map_dbl(dado, ~weighted.mean(.x$jornada_principal, .x$peso_posestrat, na.rm = TRUE)), profissao = map_chr(dado, ~mais_comum(.x$profissao_principal)), vinculo = map_chr(vinculo_primario, ~case_when( .x == "01" ~ "Privado carteira", .x == "02" ~ "Privado informal", .x == "03" ~ "Doméstico carteira", .x == "04" ~ "Doméstico informal", .x == "05" ~ "Público carteira", .x == "06" ~ "Público s/ carteira", .x == "07" ~ "Militar", .x == "08" ~ "Empregador", .x == "09" ~ "Conta-própria", .x == "10" ~ "Familiar", TRUE ~ NA_character_ )), periodo = ano + (trimestre - 1) / 4 ) pontos <- ggplot(filter(estats, !is.na(periodo)), aes(brancos, homens, col = vinculo)) + geom_point() anim <- pontos + labs(title = 'Year: {ano}T{trimestre}', x = '% brancos', y = '% homens') + gganimate::transition_time(periodo) + gganimate::ease_aes('linear') anim
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.