Sobre o Site

Pacotes

 

Esta página objetiva disponibilizar alguns recursos para facilitar/simplificar a importação de microdados com o R.

Embora o R possua a função read.fwf() que permite ao usuário importar microdados, o inconveniente existente é a necessidade de fornecer à função, para cada conjunto de dados a ser importado, os tamanhos dos campos que formam a base de dados. Outro complicador relaciona-se com o tamanho relativamente grande dos arquivos de dados disponibilizados neste formato e a conhecida dificuldade do R em lidar com bases de dados muito grandes.
 
Objetivando simplificar o processo de importação de microdados utilizando a função read.fwf() escrevi um pequeno documento denominado Usando R para Importar Microdados que pode baixado em "Meus Textos".
 
Neste documento também apresentamos uma opção de importação dos microdados com a utilização do pacote sqldf

Outra opção é o pacote IBGEPesq que, por intermédio da função le.pesquisa() possibilita uma leitura em blocos da base de dados, permitindo a importação de campos específicos definidos pelo usuário. Tanto o pacote quanto sua documentação podem ser baixados nos links a seguir:
  • IBGEPesq_1.0-3 (zip)
  • IBGEPesq_leiame (pdf)
  • IBGEPesq 1.0-0 to 1.0-2 (doc)
A versão mais recente do pacote pode ser baixada no site do IBGE.
 
A função le.pesquisa() necessita do layout do arquivo de dados a ser importado. Este layout é passado ao argumento dicionario= da função na forma de um data frame com as seguintes colunas:
  • cod - Contém os códigos das variáveis da pesquisa (Ex: V8005, V0201, ...).
  • inicio - Contém as posições iniciais de cada variável dentro do arquivo de microdados.
  • tamanho - Contém o tamanho total de cada variável dentro do arquivo de dados.
  • desc -  Contém uma pequena descrição de cada variável

Como se vê, o uso da função em questão pressupõe que o usuário disponha do dicionário de variáveis organizado em um data frame no formato acima especificado, o que nem sempre ocorre.

O pacote IBGEPesq traz os dicionários das PNADs 2005 e 2006 e caso o usuário necessite dos dicionários de outras PNADs poderá utilizar o pacote dicionariosIBGE disponível no CRAN. Este pacote, em sua versão atual (1.1.1) traz dicionários não só de diversas PNADs (1983, 1988, 1993 a 2007) como também das PMEs (2002 a 2009) e POFs (1987/1988, 1995/1996, 2002/2003, 2008/2009).

Instruções sobre o uso da função le.pesquisa() e de outras funções existentes no pacote IBGEPesq podem ser obtidas no documento IBGEPesq_1.0-2_leiame.pdf.

O professor Djalma Galvão disponibiliza em sua página alguns materiais sobre o uso do R na análise de microdados provenientes de pesquisas realizadas pelo IBGE.

Os microdados produzidos pelo IBGE e pelo INEP são distribuídos ao público juntamente com um script para importação dos mesmos pelo software SAS.

Objetivando utilizar este script para gerar o dicionário de dados necessário à importação dos dados pelo pacote IBGEPesq, escrevi uma função que converte estes scripts em SAS num data frame com as características já acima mencionadas. A função chama-se getdic() e recebe como argumento o arquivo texto contendo o script em SAS.

A seguir irei ilustrar a utilização da função usando o script para o arquivo de microdados de pessoas da pesquisa básica da PNAD 2006 (txt) e dos microdados do ENEM de 2005 (txt).

O dicionário para a o arquivo de pessoas da PNAD 2006 pode ser gerado da seguinte forma:

> DicPNAD2006Pes <- getdic("InputPes2006.sas")

> str(DicPNAD2006Pes)
'data.frame':   330 obs. of  4 variables:
 $ inicio : int  5 5 13 16 18 19 21 23 27 30 ...
 $ tamanho: int  2 8 3 2 1 2 2 4 3 1 ...
 $ cod    : chr  "UF" "V0102" "V0103" "V0301" ...
 $ desc   : chr  "UNIDADE DA FEDERAÇÃO" "NÚMERO DE CONTROLE" "NÚMERO DE SÉRIE" ...

> head(DicPNAD2006Pes)
  inicio tamanho   cod                 desc
1      5       2    UF UNIDADE DA FEDERAÇÃO
2      5       8 V0102   NÚMERO DE CONTROLE
3     13       3 V0103      NÚMERO DE SÉRIE
4     16       2 V0301      NÚMERO DE ORDEM
5     18       1 V0302                 SEXO
6     19       2 V3031    DIA DE NASCIMENTO

NOTA: Caso o leitor deseje utilizar o dicionário de dados gerado pela função getdic() para importar microdados da PNAD utilizando a função read.fwf() como ilustrado no documento Usando R para Importar Microdados acima mencionado, deve atentar para o fato de que tanto a variável UF quanto V0102 iniciam na posição 5. Recomendamos a exclusão do dicionário do registro relativo à variável UF. 
 
O dicionário para a importação da base de dados do ENEM pode ser gerado da seguinte forma:

> DicENEM2005 <- getdic("INPUT_SAS_ENEM_2006.txt")

> str(DicENEM2005)
'data.frame':   257 obs. of  4 variables:
 $ inicio : int  1 9 17 37 45 57 107 115 123 131 ...
 $ tamanho: int  8 8 20 8 12 50 8 8 8 12 ...
 $ cod    : chr  "MASC_INSCRITO" "NU_ANO" "DT_NASCIMENTO" "TP_SEXO" ...
 $ desc   : chr  "Ano do Enem" "Data de nascimento do inscrito" "Sexo do inscrito" "Código do Município em que o inscrito mora:" ...

> head(DicENEM2005)
  inicio tamanho           cod                                        desc
1      1       8 MASC_INSCRITO                                 Ano do Enem
2      9       8        NU_ANO              Data de nascimento do inscrito
3     17      20 DT_NASCIMENTO                            Sexo do inscrito
4     37       8       TP_SEXO Código do Município em que o inscrito mora:
5     45      12 CODMUNIC_INSC    Nome do município em que o inscrito mora
6     57      50     DS_CIDADE         Situação em relação ao ensino médio

A função ora opresentada foi testada em alguns poucos scripts, e não há garantias de que funcione em todos scripts, já que se baseia fortemente na estrutra do arquivo.
Pedimos que eventuais usuários reportem os erros verificados em sua utilização.