knitr::opts_chunk$set(echo = FALSE)
knitr::opts_knit$set(root.dir = "C:/Users/gustavo/Desktop/curso R para jornalistas/uDados/") 

Passo a passo para extrair informações da PNADC usando o PnadcTidy

  1. Baixar os dados da PnadC
  2. Abrir o RStudio
  3. Instalar e carregar pacotes
  4. Instalar o PnadcTidy
  5. Ler a Pnad com o PnadcTidy

  6. Como extrair informações e tabelas a. Criando categorias e rótulos b. Extraindo informações/tabelas sem desenho amostral c. Exportando tabelas para o Excel d. Extraindo informações/tabelas com desenho amostral e. Juntando bancos


1. Baixar os dados da PnadC

A primeira coisa a ser feita para usar o comando PnadcTidy é baixar os arquivos com os microdados da PnadC e com o Input para o SAS.

O IBGE disponibiliza uma pasta com todos os dados da Pnad Contínua. Ela se encontra no endereço: ftp://ftp.ibge.gov.br/Trabalho_e_Rendimento/Pesquisa_Nacional_por_Amostra_de_Domicilios_continua/.


Exemplo: baixando os dados do 4º trimestre de 2019

Para utilizar os dados da PnadC trimestral do 4º trimestre de 2019, é necessário:

  1. Baixar o arquivo "PNADC_042019.zip", na pasta: ftp://ftp.ibge.gov.br/Trabalho_e_Rendimento/Pesquisa_Nacional_por_Amostra_de_Domicilios_continua/Trimestral/Microdados/2019/.

  2. Baixar o arquivo "Dicionario_e_input.zip", na pasta: ftp://ftp.ibge.gov.br/Trabalho_e_Rendimento/Pesquisa_Nacional_por_Amostra_de_Domicilios_continua/Trimestral/Microdados/Documentacao/.

  3. A seguir, é preciso descompactar os dois arquivos. Para utilizar o comando PnadcTidy, serão necessários os seguintes arquivos descompactados:

  4. "Input_PNADC_trimestral.txt" e,
  5. "PNADC_042019.txt".

2. Abrir o RStudio

Depois de baixar e descompactar os arquivos, abra o RStudio e execute alguns comandos iniciais para limpar a memória e definir a pasta de trabalho do R.

rm(list=ls())   # Limpa objetos no Environment
cat("\014")     # Limpa o console


# O comando abaixo mostra qual é a pasta de trabalho do R.Ou seja, em qual pasta o R vai ler e salvar os arquivos
getwd()


# Informe ao R qual vai ser sua pasta de trabalho - quer dizer, em qual pasta estão os arquivos baixados da PnadC. Eu vou alterar para a pasta uDados.
setwd("C:/Users/gustavo/Desktop/curso R para jornalistas/uDados/")

Repare que, para definir o caminho da pasta, deve-se usar as barras invertidas:

"/"

Exceção: sistema iOS.


3. Instalar e carregar pacotes

Para usar o comando PnadTidy e manipular os dados da PnadC, vamos usar algumas funções que fazem parte de pacotes que não vêm com o R básico.

Pacotes são

"conjuntos extras de funções que podem ser instalados além do R base" (IBDAP, p. 15).

Para instalar um pacote, basta executar o comando abaixo: install.packages("nome do pacote")

Vamos instalar apenas os pacotes que iremos utilizar:

install.packages("readr")

install.packages("dplyr")

install.packages("questionr")

install.packages("PNADcIBGE")

install.packages("survey")

install.packages("devtools")

Depois de instalados, os pacotes ficam disponíveis na biblioteca para serem usados e não precisam ser instalados novamente em cada uso. No entanto, é preciso carregar os pacotes que serão utilizados toda vez que um novo código for escrito. O comando library carrega os pacotes:

library(readr) # pacote para leitura de dados
library(dplyr) # pacote para manusear os dados
library(questionr) # pacote para gerar tabelas com peso amostral
library(PNADcIBGE) # pacote para baixar e ler a Pnad e definir desenho amostral
library(survey) # pacote utilizado na definição do desenho amostral
library(devtools) # pacote utilizado para baixar o PnadcTidy

4. Instalar o PnadcTidy

O pacote PnadcTidy está em um repositório do Github. Para instalá-lo e carregá-lo, execute as linhas de comando abaixo:

devtools::install_github("gustavoppmonteiro/PnadcTidy")
library(PnadcTidy)

É importante lembrar que, na hora da instalação, o nome do pacote deve aparecer entre aspas. Mas isso não é necessário ao executar o comando library, que carrega o pacote.


5. Ler a Pnad com o PnadcTidy

O comando PnadcTidy é composto por três argumentos:

PnadcTidy(inputSAS, arquivoPnad, variaveis),

Para funcionar corretamente, é necessário especificar os três argumentos:

Em caso de dúvidas, é possível obter ajuda executando a linha de comando abaixo. A ajuda aparece na janela "Help" ao lado.

?PnadcTidy

Exemplo: lendo os dados do 4º trimestre de 2019

Neste exemplo, vamos ler os dados salvos na pasta de trabalho do R, referentes à Pnad trimestral do 4º trimestre de 2019. Vamos guardar esses dados em um objeto chamado "Pnad4T2019".

Além disso, vamos manter apenas algumas variáveis do banco, com o objetivo de poupar espaço na memória e reduzir o tempo de processamento.

Vamos manter as seguintes variáveis:

Pnad4T2019 <- PnadcTidy(inputSAS="Input_PNADC_trimestral.txt", 
                       arquivoPnad="PNADC_042019.txt", 
                       variaveis=c("VD4009", "V2009", "V2007" ,"UF", "VD4016", "VD4002"))


head(Pnad4T2019) # visualizar as primeiras 6 linhas do banco

O comando dim exibe as dimensões de um banco. Note abaixo que o banco que criamos (Pnad4T2019) tem 542.802 linhas (ou, observações/entrevistados) e 12 colunas (ou, variáveis):

dim(Pnad4T2019) # vê as dimensões do banco estruturado

Pronto!

Os dados da Pnad estão prontos para serem manuseados, em um banco de dados estruturado.

Abaixo seguem alguns exemplos de informações e tabelas que podem ser extraídas do banco resultante.


6. Como extrair informações e tabelas

a. Criando categorias e rótulos

Algumas vezes é útil reclassificar os valores de uma variável em novas categorias. Por exemplo, se quisermos classificar uma variável com valores contínuos em faixas de valores. Por exemplo, podemos transformar a variávels de idade em faixas etárias, a variável de rendimento em faixas de rendimento ou a variável de anos de estudo em graus de instrução. Uma forma de fazer isso é criando uma nova variável que contenha valores que correspondam às categorias desejadas.

Por exemplo, vamos utilizar a variável de idade (V2009) para criar uma variável de faixa etária (fxEtaria) com as seguintes categorias: Menos de 14 anos De 14 a 17 anos De 18 a 24 anos De 24 a 29 anos * 30 anos ou mais

``` {r, echo=T, message=F}

Pnad4T2019 <- Pnad4T2019 %>% mutate(fxEtaria=NA) # cria a variável fxEtaria, com todos os valores igual a missing

Abaixo, as categorias são separadas:

Pnad4T2019$fxEtaria[Pnad4T2019$V2009 < 14] = "Menos de 14" Pnad4T2019$fxEtaria[Pnad4T2019$V2009 >= 14 & Pnad4T2019$V2009 <=17] = "14 a 17 anos" Pnad4T2019$fxEtaria[Pnad4T2019$V2009 >= 18 & Pnad4T2019$V2009 <=24] = "18 a 24 anos" Pnad4T2019$fxEtaria[Pnad4T2019$V2009 >= 25 & Pnad4T2019$V2009 <=29] = "25 a 29 anos" Pnad4T2019$fxEtaria[Pnad4T2019$V2009 >= 30] = "30 anos ou +"

head(Pnad4T2019) # visualizando o resultado

***


Essa forma de categorização também pode ser utilizada para criar *rótulos*. No exemplo abaixo, atribuimos os rótulos "Homem" e "Mulher" para a variável de sexo (V2007), em uma nova variável que chamamos de "sexo".



``` {r, echo=T, message=F}

Pnad4T2019 <- Pnad4T2019 %>% 
        mutate(sexo=NA)         # cria variável sexo, com todos os valores missing


Pnad4T2019$sexo[Pnad4T2019$V2007 == 1] = "Homem"        # cria rótulos para os valores da variável V2007
Pnad4T2019$sexo[Pnad4T2019$V2007 == 2] = "Mulher"

Pnad4T2019 <- Pnad4T2019 %>% 
        select(-V2007)          # joga fora a variável V2007. 

b. Fazendo tabelas sem usar o desenho amostral

O jeito mais fácil de processar tabelas da PnadC é utilizando o pacote questionr. Primeiro é preciso baixá-lo e carregá-lo, caso já não o tenha feito, usando os comandos abaixo:

install.packages("questionr") library(questionr)


Exemplo 1: Rendimento médio das mulheres no Estado de SP

``` {r, echo=T, message=F}

Pnad4T2019SP <- Pnad4T2019 %>% filter(sexo=="Mulher" & V2009 >= 14 & VD4002 ==1 & UF==35) # filtra mulheres, com 14 anos ou + e de SP tabela1 <- wtd.mean(Pnad4T2019SP$VD4016, w = Pnad4T2019SP$V1028) tabela1

*Obs.: O resultado bateu com o do SIDRA: https://sidra.ibge.gov.br/tabela/5429#resultado*


***


##### Exemplo 2: Quantidade de ocupados segundo sexo 


``` {r, echo=T, message=F}

tabela2 <- wtd.table(Pnad4T2019$sexo, Pnad4T2019$VD4002, w = Pnad4T2019$V1028)
tabela2

Obs.: Bateu com Sidra: https://sidra.ibge.gov.br/tabela/4093#resultado


c. Exportando tabelas para o Excel

É possível copiar e colar os valores dos resultados diretamente do console. Outra opção é exportar os dados para uma planilha de excel, usando os comandos abaixo:

``` {r, echo=T, message=F}

write.csv2(tabela1, "arquivo.csv") # grava a tabela1 (na pasta de trabalho)

***


#### d. extraindo informações/tabelas com desenho amostral (pacote `PNADcIBGE`)


O primeiro passo para gerar tabelas utilizando o desenho amostral da Pnad é baixar e carregar os pacotes `survey` e `PNADcIBGE`, se já não o tiver feito.


``` {r, echo=T, message=F}

library(survey)         # carregando os pacotes survey e PNADcIBGE
library(PNADcIBGE)

Para declarar o desenho amostral da Pnad, vamos utilizar a função pnadc_design do pacote PNADcIBGE.

``` {r, echo=T, message=F}

dadosDesenho <- pnadc_design(Pnad4T2019) # configura desenho amostral e o salva no objeto dadosDesenho

***



##### Exemplo 1: número de ocupados por sexo no estado de São Paulo



``` {r, echo=T, message=F}

# cria variável filtro, em que todas as linhas terão valor zero, exceto as linhas referentes 
# aos nossos indivíduos de interesse: pessoas acima de 13 anos, ocupadas e de SP. Para esses,
# a variável filtro terá valor 1.
Pnad4T2019 <- Pnad4T2019 %>% 
        mutate(filtro = ifelse((V2009 >= 14 & VD4002 == 1 & UF==35), 1, 0))


# o objeto totalSexo vai conter a quantidade de pessoas que passam nos critérios do filtro, segundo sexo
totalSexo <- svytotal(~sexo, subset(dadosDesenho, Pnad4T2019$filtro == 1), na.rm=T)
totalSexo
cv(totalSexo) # a função cv exibe o coeficiente de varição de cada estimativa.

Note que, para o 4º trimestre de 2019, a estimativa era de que havia 12.347.245 homens ocupados em SP. O CV desse dado era de 0,8%.

Obs.: Bateu com o Sidra: https://sidra.ibge.gov.br/tabela/4093#resultado


Exemplo 2: renda média por sexo no estado de São Paulo

``` {r, echo=T, message=F}

Pnad4T2019 <- Pnad4T2019 %>% # cria variável filtro2 mutate(filtro2 = ifelse((V2009 >= 14 & VD4016 > 0 & UF==35), # com quem queremos pegar: 1, 0)) # acima de 13 anos, com rendimento e # de SP.

mediaRendaSexo <- svyby(~VD4016, # a tabela mediaRendaSexo conterá a média ~sexo, # da variável VD4016, segundo sexo subset(dadosDesenho, Pnad4T2019$filtro2 == 1), # indicamos também o desenho e o filtro. svymean, na.rm = T) # svymean indica que queremos a média.

mediaRendaSexo # resultado cv(mediaRendaSexo) # a função cv exibe o coeficiente de varição de cada estimativa.

O resultado nos diz que o rendimento médio estimado das mulheres ocupadas em SP era de R$ 2449. O CV desse dado era de 3,8%.


*Obs.: Bateu com o Sidra: <https://sidra.ibge.gov.br/tabela/4093#resultado>*


***

#### e. juntando dois bancos estruturados

É possível juntar um ou mais bancos antes de extrair informações. Isso pode ser útil quando queremos ver a evolução de algum indicador, por exemplo.
Para unir dois bancos diferentes vamos utilizar o comando `bind_rows`, do pacote `dplyr`.


***

##### Exemplo: juntando os bancos do quarto trimestre de 2018 e 2019, com informações do estado de SP


Primeiro, é necessário baixar do site do IBGE três arquivos:
* o input do SAS;
* os microdados do 4º trimestre de 2018, e
* os microdados do 4º trimestre de 2019.


Depois disso (e de ter filtrado as informações do estado de SP), é preciso salvar os dois bancos em objetos distintos.


Daí, usando o comando `bind_rows`, criamos um terceiro objeto com os dois bancos juntos.



``` {r, echo=T, message=F, warning = F}

# vamos apagar o banco que está carregado na memória, para abrir mais espaço
rm(Pnad4T2019)



# abre o 4º trimestre de 2018 e O salva no objeto pnad1
pnad1 <- PnadcTidy(inputSAS="Input_PNADC_trimestral.txt", 
                      arquivoPnad="PNADC_042018_20190729.txt", 
                      variaveis=c("V2007" ,"UF", "VD4002", "Ano"))

pnad1 <- pnad1 %>% 
        filter(UF==35)  # filtra as linhas do estado de SP



# abre o 4º trimestre de 2019 e O salva no objeto pnad2
pnad2 <- PnadcTidy(inputSAS="Input_PNADC_trimestral.txt", 
                       arquivoPnad="PNADC_042019.txt", 
                       variaveis=c("V2007" ,"UF", "VD4002", "Ano"))

pnad2 <- pnad2 %>% 
        filter(UF==35)  # filtra as linhas do estado de SP

OBS.: É IMPORTANTE MANTER NOS BANCOS ALGUMA INFORMAÇÃO QUE POSSIBILITE DISTINGUIR DE QUAL BANCO CADA LINHA SE ORIGINOU. NESTE CASO, PRESERVAMOS A VARIÁVEL "Ano".

``` {r, echo=T, message=F, warning = F}

o objeto pnadSP vai conter informações dos dois trimestres

pnadSP <- bind_rows(pnad1, pnad2)

agora podemos apagar os dois bancos iniciais, para poupar espaço na meméria

rm(pnad1, pnad2)

*OBS.: QUANDO JUNTAMOS BANCOS REFERENTES A MAIS DE UM TRIMESTRE, NÃO É MAIS POSSÍVEL EXTRAIR INFORMAÇÕES USANDO O DESENHO AMOSTRAL*


***

Exemplo de tabela usando os dois trimestres salvos:

``` {r, echo=T, message=F, warning = F}

# Número de ocupad0s em 4t de 2018 e 2019 em SP, por sexo
ocupados <- pnadSP %>% 
        filter(VD4002 == 1)    # filtra ocupados


# cria variável com rótulo de sexo
ocupados <- ocupados %>% 
        mutate(sexo=NA)

ocupados$sexo[ocupados$V2007 == 1] = "Homem"
ocupados$sexo[ocupados$V2007 == 2] = "Mulher"

ocupados <- ocupados %>% 
        select(-V2007)

# gera a tabela
tabela <- wtd.table(ocupados$sexo, ocupados$Ano, w = ocupados$V1028)
tabela

Entre o 4º trimestre de 2018 e o 4º trimestre de 2019 o número de mulheres ocupadas em SP passou de 10.178.642 para 10.431.725.

Obs.: Bateu com o SIDRA: hhttps://sidra.ibge.gov.br/tabela/4093#resultado


...




gustavoppmonteiro/PnadcTidy documentation built on May 21, 2020, 4:34 p.m.