Esse projeto foi realizado como parte do critério para aprovação na disciplina “Ciência de Dados para Economistas” ministrada pelo professor Roney Fraga na Faculdade de Economia da UFMT. O objetivo é aplicar os conhecimentos de R adquiridos no curso para limpar e realizar algumas análises em cima de determinada base dados deixando os dados prontos para “uso”. No nosso caso utilizamos os microdados da PNAD 2015 e tivemos como base o artigo de Nascimento e Kassouf (2016).
Aqui estão dispostos os passos para chegar aos resultados, o código completo está disponível aqui. Primeiro importamos o dicionário da PNAD 2015 para leitura em R disponível no site do IBGE.
load("../PNAD/2015/Leitura_em_R_20170517/Leitura em R/dicPNAD2015.Rdata")Os dados disponíveis no site do IBGE tem um problema no dicionário quanto ao início das variáveis UF e V0102, ambas iniciam na mesma posição, sendo assim não é possível importar a PNAD diretamente apenas declarando o tamanho das variáveis, a alternativa é eliminar a variável UF do dicionário e carregar a PNAD, assim, as duas variáveis serão carregadas como se fossem uma então é só selecionar as duas primeiras posições dessa variável para obter a variável UF.
dicpes2015 <- dicpes2015[dicpes2015$cod2 != "UF",]# importa a pnad 2015 passando o tamanho das variáveis no argumento widths e o nome das colunas em col.names
pnad2015 <- read.fwf("../PNAD/2015/Dados_20170517/Dados/PES2015.txt",
widths = dicpes2015$tamanho2,
col.names = dicpes2015$cod2)
# cria a variavel UF
pnad2015$uf <- substr(pnad2015$V0102,1,2) Como o foco do trabalho é nas pessoas de menos de 15 anos, fazemos esse subset e exportamos os dados em .rds para não precisar rodar o código acima de novo e tornar a leitura mais rápida para o R em um futuro próximo. Foi utilizada a função export do pacote rio para exportar o objeto.
pnad2015_15 <- pnad2015[pnad2015$V8005 <= 15,]
export(pnad2015, "../PNAD/2015/pnad2015.Rds")A partir daqui se dá a criação das nossas variáveis de interesse, escolaridade da pessoa de referência e número de irmãos do indivíduo, para obter essa última ainda foi necessário criar a variável que nos da o número de filhos no domicílio.
# as nossas variáveis de interesse
vars <- c("uf", "V0102", "V0103", "V0301", "V0302", "V8005", "V0401",
"V0404", "V4011", "V0701", "V0704", "V7122", "V7128", "V0713",
"V9001", "V9005", "V9029", "V9532", "V9058", "V9067", "V9971", "V9891",
"V9892", "V1272", "V1273", "V4801", "V4805", "V4809", "V4810", "V4812",
"V4718", "V4728", "V4729", "V4742", "V4746", "V0403", "V6007", "V6003")
pnad2015_merged <- pnad2015 %>%
filter(V0401 == 1) %>% # filtrando apenas as pessoas de referencia
group_by(V0102, V0103, V0403) %>% # agrupando por domicilio (numero de controle, serie e familia)
summarise(educacao_pref = max(V6007)) %>% # cria uma variavel com a educação da pessoa de ref
ungroup() %>% # desfaz o agrupamento
right_join(.,pnad2015 %>% select(vars)) # fusiona os dois dataframes selecionando apenas as variaveis desejadas da pnad2015Esse processo acima cria o objeto pnad2015_merged com a nova variável educacao_pref para cada um dos indivíduos em determinado domicílio.
pnad_broder <- pnad2015_merged %>%
subset(V0401 == 3) %>% # seleciona apenas pessoas que sao filhos
group_by(V0102, V0103, V0403) %>% # agrupa por domicilio
summarise(filhos_domicilio = n()) %>% # cria uma variavel filhos_domicilio com numero de filhos no domicilio
ungroup() %>% # desagrupa
right_join(.,pnad2015_merged) %>% # junta os dois dataframes (o agrupado com variavel filho e o da pnad)
mutate(., nmr_irmaos = if_else(V0401 == 3 & filhos_domicilio > 1, filhos_domicilio - 1, 0, missing = NaN)) Com a função mutate cria-se uma nova variável nmr_irmaos (número de irmãos) utilizando o statement if/else vetorizado, onde, se há mais de um filho além do indivíduo no domicílio é subtraído um, e caso não tenha filho além deste recebe 0.
Em tese nossos dados estão prontos. Apenas então “subsetamos” o dataset para pessoas entre 5 e 15 anos e exportamos para análise posterior aqui.
pnad_broder %>% subset(5 <= V8005 & V8005 <= 15) %>% export(., "2015/pes_5_15.Rds")Pequena olhada na tabela dos indivíduos de 5 a 15 anos de idade já com as variáveis filhos_domicilio, educacao_pref e nmr_irmaos.
| V0102 | V0103 | V0403 | filhos_domicilio | educacao_pref | uf | V0301 | V0302 | V8005 | V0401 | V0404 | V4011 | V0701 | V0704 | V7122 | V7128 | V0713 | V9001 | V9005 | V9029 | V9532 | V9058 | V9067 | V9971 | V9891 | V9892 | V1272 | V1273 | V4801 | V4805 | V4809 | V4810 | V4812 | V4718 | V4728 | V4729 | V4742 | V4746 | V6007 | V6003 | nmr_irmaos |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 11000015 | 4 | 1 | 3 | – | 11 | 3 | 4 | 11 | 3 | 8 | 0 | – | – | – | – | – | 3 | – | – | – | – | 3 | – | – | – | – | – | 16 | – | – | – | – | – | 1 | 270 | 793 | 2 | – | 1 | 2 |
| 11000015 | 4 | 1 | 3 | – | 11 | 4 | 4 | 7 | 3 | 8 | – | 3 | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | 14 | – | – | – | – | – | 1 | 270 | 793 | 2 | – | 1 | 2 |
| 11000015 | 9 | 1 | 3 | 5 | 11 | 4 | 4 | 11 | 3 | 8 | 0 | – | – | – | – | – | 3 | – | – | – | – | 3 | – | – | – | – | – | 17 | – | – | – | – | – | 1 | 270 | 818 | 2 | – | 1 | 2 |
| 11000023 | 2 | 1 | 1 | 5 | 11 | 2 | 4 | 10 | 3 | 8 | 0 | – | – | – | – | – | 3 | – | – | – | – | 3 | – | – | – | – | – | 16 | – | – | – | – | – | 1 | 270 | 750 | 2 | – | 1 | 0 |
| 11000023 | 8 | 1 | 1 | 8 | 11 | 3 | 4 | 5 | 3 | 2 | – | 3 | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | 1 | – | – | – | – | – | 1 | 270 | 2666 | 2 | – | 9 | 0 |
| 11000023 | 11 | 1 | 1 | 5 | 11 | 2 | 2 | 15 | 3 | 8 | 0 | – | – | – | – | – | 1 | 1 | 1 | 250 | 30 | – | – | 2 | 13 | – | – | 18 | 1 | 3 | 8 | 2 | 250 | 1 | 270 | 700 | 1 | – | 1 | 0 |