Esta página objetiva disponibilizar alguns recursos para facilitar/simplificar a importação de microdados com o R.
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)
- 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:
> 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.
> 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.