knitr::opts_chunk$set(echo = FALSE) knitr::opts_knit$set(root.dir = "C:/Users/gustavo/Desktop/curso R para jornalistas/uDados/")
PnadcTidy
PnadcTidy
Ler a Pnad com o PnadcTidy
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
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/.
Para utilizar os dados da PnadC trimestral do 4º trimestre de 2019, é necessário:
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/.
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/.
A seguir, é preciso descompactar os dois arquivos. Para utilizar o comando PnadcTidy, serão necessários os seguintes arquivos descompactados:
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.
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
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.
PnadcTidy
O comando PnadcTidy
é composto por três argumentos:
PnadcTidy(inputSAS, arquivoPnad, variaveis)
,
Para funcionar corretamente, é necessário especificar os três argumentos:
inputSAS: usado para especificar o nome do arquivo Input do SAS (deve terminar em ".txt").
arquivoPnad: usado para especificar o nome do arquivo de microdados da PnadC (deve terminar em ".txt").
variaveis: usado para selecionar as variáveis da PnadC que serão mantidas na base.
Em caso de dúvidas, é possível obter ajuda executando a linha de comando abaixo. A ajuda aparece na janela "Help" ao lado.
?PnadcTidy
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.
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
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.
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)
``` {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
É 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
``` {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}
pnadSP <- bind_rows(pnad1, pnad2)
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
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.