SAUDAÇÕES!

Seja bem vindo à página do professor Pedro Albuquerque. Para saber mais sobre meu currículo, disciplinas ministradas e interesses de pesquisa, navegue no menu disponível no topo da página.

segunda-feira, 15 de fevereiro de 2016

Leitura das Bases do IBGE no R.


Frequentemente, pesquisadores desejam utilizar dados secundários em suas análises. Nesse sentido, o maior produtor de fontes primárias de dados é o IBGE. Para acessar as pesquisas basta ir em : http://downloads.ibge.gov.br/. Considere, por exemplo, os dados da Pesquisa de Orçamentos Familiares 2008 disponível no sítio do IBGE.


Nesse post, faremos um exercício para a leitura do dados da POF (Pesquisa de Orçamentos Familiares). Vamos trabalhar com os dois arquivos inicialmente: T_MORADOR_S.txt e T_DESPESA_INDIVIDUAL_S.txt.
O dicionário com as informações também está disponível: Layout com Descrições.xls .

Estamos interessados nas seguintes variáveis da base T_MORADOR_S.txt:


Para fazer a leitura dessa base, vamos usar a função LeBasesPosicaoFixa.R disponível no originalmente na página do Prof. Elias da UFPR:

#Local na máquina onde estão os dados e o arquivo LeBasesPosicaoFixa.R:

setwd("C:\\Users\\Dados\\POF 2008")
##Exemplo 1: Invoca a função LeBasesPosicaoFixa.R
source("LeBasesPosicaoFixa.R")

### Cria um novo arquivo somene com as informações necessárias
# Seleciona tudo: 
fselpr<-function(x) x
#Seleciona somente UF 53: fselpr <- function(x) x[substring(x,3,4)==53]
rcsel.pfix(file.inp="T_MORADOR_S.txt", file.out="MORADOR.txt",
           first=c(3,5,8,9,11,12,60,112),
           last=c(4,7,8,10,11,13,62,127),
           fselpr)
###Lê os dados do arquivo de interesse
dados<-read.table("MORADOR.txt")
###Deleta o arquivo MORADOR.txt
file.remove("MORADOR.txt")
#Coloca os nomes das variáveis
colnames(dados)<-c("COD_UF","NUM_SEQ","NUM_DV","COD_DOMC","NUM_UC","NUM_INF",
                   "IDADE_ANOS","RENDA_BRUTA_MONETARIA")
#Coloca os labels nas variáveis
library(Hmisc)
label(dados$COD_UF)<-'CÓDIGO DA UF'
label(dados$NUM_SEQ)<-'NÚMERO SEQUENCIAL'
label(dados$NUM_DV)<-'DV DO SEQUENCIAL'
label(dados$COD_DOMC)<-'NÚMERO DO DOMICÍLIO'
label(dados$NUM_UC)<-'NÚMERO DA UC'
label(dados$NUM_INF<-'NÚMERO DO INFORMANTE'
label(dados$IDADE_ANOS)<-'IDADE CALCULADA EM ANOS'
label(dados$RENDA_BRUTA_MONETARIA)<-'RENDA MONETÁRIA MENSAL DA UC'
describe(dados)
Repare que as linhas 9 e 10 do código anteriores determinam as posições iniciais e finais das variáveis de interesse. Na segunda parte usamos os dados do arquivo T_DESPESA_INDIVIDUAL_S.txt para as seguintes variáveis:
O código de leitura e criação dos labels é dado por:
##Exemplo 2: Lê os dados do arquivo T_DESPESA_INDIVIDUAL_S.txt
rcsel.pfix(file.inp="T_DESPESA_INDIVIDUAL_S.txt", file.out="DESPESA.txt",
           first=c(3,5,8,9,11,12,44,46,53),
           last=c(4,7,8,10,11,13,45,50,63), fselpr)
###Lê os dados do arquivo de interesse
desp<-read.table("DESPESA.txt")
###Deleta o arquivo MORADOR.txt
file.remove("DESPESA.txt")

#Coloca os nomes das variáveis
colnames(desp)<-c("COD_UF","NUM_SEQ","NUM_DV","COD_DOMC","NUM_UC",
"NUM_INF","NUM_QUADRO","COD_ITEM","VAL_DESPESA")

#Coloca os labels nas variáveis
label(desp$COD_UF)<-'CÓDIGO DA UF'
label(desp$NUM_SEQ)<-'NÚMERO SEQUENCIAL'
label(desp$NUM_DV)<-'DV DO SEQUENCIAL'
label(desp$COD_DOMC)<-'NÚMERO DO DOMICÍLIO'
label(desp$NUM_UC)<-'NÚMERO DA UC'
label(desp$NUM_INF)<-'NÚMERO DO INFORMANTE'
label(desp$NUM_QUADRO)<-'NÚMERO DO QUADRO'
label(desp$COD_ITEM)<-'CÓDIGO DO ITEM'
label(desp$VAL_DESPESA)<-'VALOR DA DESPESA / AQUISIÇÃO'
Finalmente, as bases podem ser unidas por meio do comando merge do R, e usando como variáveis chave: "COD_UF","NUM_SEQ","NUM_DV","COD_DOMC","NUM_UC" e "NUM_INF":
##Exemplo 3: Une as bases
dados.pof<-merge(dados,desp,by=c("COD_UF","NUM_SEQ","NUM_DV","COD_DOMC","NUM_UC","NUM_INF"),all=FALSE)
head(dados.pof)