leitura dados PNAD 2003 - variáveis V1701 a V1377

Bom dia, estou tentando ler as variáveis da PNAD de 2003 - V1701 a V1377- relacionadas ao suplemento Saúde- e as mesmas aparecem como NA. O banco está disponível no site do IBGE http://www.ibge.gov.br/home/estatistica/populacao/trabalhoerendimento/pnad20.... Também podem ser acessados no dropbox: https://www.dropbox.com/sh/d0z62bg4qqyg2x3/AAAVDYWjVlb4JpUTYlQfvq-Ka?dl=0. Estou usando os comandos abaixo: #----------------Ler microdados da PNAD 2003 (variáveis referente ao suplemento Saúde) utilizando a função read.fwf.r ----------------------# source(file.choose()) #carregar a função selectvar da pasta funcoes source(file.choose()) #carregar a função getdic da pasta funcoes # Gerar os dicionários de dados a partir dos arquivos: 'input PES2003.txt' dicPNAD2003Pes <- getdic(file.choose())# abrir o arquivo input PES2003.txt, dentro da Pasta Input head(dicPNAD2003Pes) str(dicPNAD2003Pes) nrow(dicPNAD2003Pes) dim(dicPNAD2003Pes) # Para EXCLUSÃO do "UF" (que apresenta erro na importação por começar na mesma posição que número de controle): dicPNAD2003Pes <- subset(dicPNAD2003Pes, cod !="UF") head(dicPNAD2003Pes) dim(dicPNAD2003Pes) ####Usar estes comandos para importar *apenas algumas variáveis* da base de dados das PESSOAS variaveis <- selectvar(dicPNAD2003Pes) # Com a tecla CTRL pressionada, selecione as variáveis de interesse, neste caso são as que aparecem como NA: Erro em substring(x, first, last) : invalid substring arguments ### PROBLEMA: Ao abrir a janela das variáveis utilizando o comando acima, as variáveis de interesse referentes a saúde aparecem como NA, diferentemente das demais variáveis que aparecem no banco. No dicionário as mesmas aparecerem corretamente. Atenciosamente, __________________________________________________ Luciane Maria Pilotto

Olá Luciane, A idéia da função selectvar() é permitir ao usuário selecionar as variáveis com base na descrição das mesmas. No seu caso, vi que diversas variáveis não possuem uma descrição, o que torna o uso desta função um pouco sem sentido. Uma abordagem pode ser a seguinte: # Definir o diretóro de trabalho setwd("C:\\Users\\Marcos\\Documents\\PNAD") # Importar funções auxiliares source("getdic.R") # Obter o dicionário dic <- getdic("INPUT PES2003.TXT") # Excluir a variável UF dic <- subset(dic, cod != "UF") # Variáveis a serem importadas V1701 e V1377 variaveis_interesse <- ifelse(dic$cod %in% c("V1701", "V1377"), dic$tamanho, dic$tamanho * (-1)) # Importa os dados dados <- read.fwf("PES2003.TXT", widths=variaveis_interesse, comment.char="", strip.white=TRUE) Acho que deve funcionar. Ainda não testei :) Atualmente existem outras opções para a importação de microdados que podem ser interessantes. Dê uma olhada nos pactoes LaF e SAScii. Boa Sorte! Em 24 de março de 2015 09:52, Luciane Maria Pilotto < lutipilotto@yahoo.com.br> escreveu:
Bom dia,
estou tentando ler as variáveis da PNAD de 2003 - V1701 a V1377- relacionadas ao suplemento Saúde- e as mesmas aparecem como NA. O banco está disponível no site do IBGE http://www.ibge.gov.br/home/estatistica/populacao/trabalhoerendimento/pnad20... .
Também podem ser acessados no dropbox: https://www.dropbox.com/sh/d0z62bg4qqyg2x3/AAAVDYWjVlb4JpUTYlQfvq-Ka?dl=0.
Estou usando os comandos abaixo:
#----------------Ler microdados da PNAD 2003 (variáveis referente ao suplemento Saúde) utilizando a função read.fwf.r ----------------------#
source(file.choose()) #carregar a função selectvar da pasta funcoes source(file.choose()) #carregar a função getdic da pasta funcoes
# Gerar os dicionários de dados a partir dos arquivos: 'input PES2003.txt' dicPNAD2003Pes <- getdic(file.choose())# abrir o arquivo input PES2003.txt, dentro da Pasta Input
head(dicPNAD2003Pes) str(dicPNAD2003Pes) nrow(dicPNAD2003Pes) dim(dicPNAD2003Pes)
# Para EXCLUSÃO do "UF" (que apresenta erro na importação por começar na mesma posição que número de controle):
dicPNAD2003Pes <- subset(dicPNAD2003Pes, cod !="UF") head(dicPNAD2003Pes) dim(dicPNAD2003Pes)
####Usar estes comandos para importar *apenas algumas variáveis* da base de dados das PESSOAS
variaveis <- selectvar(dicPNAD2003Pes) # Com a tecla CTRL pressionada, selecione as variáveis de interesse, neste caso são as que aparecem como NA: Erro em substring(x, first, last) : invalid substring arguments
### PROBLEMA: Ao abrir a janela das variáveis utilizando o comando acima, as variáveis de interesse referentes a saúde aparecem como NA, diferentemente das demais variáveis que aparecem no banco. No dicionário as mesmas aparecerem corretamente.
Atenciosamente,
__________________________________________________ Luciane Maria Pilotto
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
-- Marcos F. Silva http://sites.google.com/site/marcosfs2006

Para ler o arquivo, você poderia em princípio usar a função read.fwf. Mas essa função não é otimizada para dados grandes, então você vai preferir alguma alternativa. Uma opção é importar com o comando laf.open do pacote LaF, e outra é transformar de largura fixa para csv com o comando fwf2csv do pacote descr, e então importar com o comando read.table do pacote data.table. Atualmente minha opção favorita é esta última. Procurando nesta lista de discussão e no stack overflow você encontra orientações detalhadas. -- Leonardo Ferreira Fontenelle http://lattes.cnpq.br/9234772336296638 Em Ter 24 mar. 2015, às 09:52, Luciane Maria Pilotto escreveu:
Bom dia,
estou tentando ler as variáveis da PNAD de 2003 - V1701 a V1377- relacionadas ao suplemento Saúde- e as mesmas aparecem como NA. O banco está disponível no site do IBGE http://www.ibge.gov.br/home/estatistica/populacao/trabalhoerendimento/pnad20....
Também podem ser acessados no dropbox: https://www.dropbox.com/sh/d0z62bg4qqyg2x3/AAAVDYWjVlb4JpUTYlQfvq-Ka?dl=0.
Estou usando os comandos abaixo:
#----------------Ler microdados da PNAD 2003 (variáveis referente ao suplemento Saúde) utilizando a função read.fwf.r ----------------------#
source(file.choose()) #carregar a função selectvar da pasta funcoes source(file.choose()) #carregar a função getdic da pasta funcoes
# Gerar os dicionários de dados a partir dos arquivos: 'input PES2003.txt' dicPNAD2003Pes <- getdic(file.choose())# abrir o arquivo input PES2003.txt, dentro da Pasta Input
head(dicPNAD2003Pes) str(dicPNAD2003Pes) nrow(dicPNAD2003Pes) dim(dicPNAD2003Pes)
# Para EXCLUSÃO do "UF" (que apresenta erro na importação por começar na mesma posição que número de controle):
dicPNAD2003Pes <- subset(dicPNAD2003Pes, cod !="UF") head(dicPNAD2003Pes) dim(dicPNAD2003Pes)
####Usar estes comandos para importar *apenas algumas variáveis* da base de dados das PESSOAS
variaveis <- selectvar(dicPNAD2003Pes) # Com a tecla CTRL pressionada, selecione as variáveis de interesse, neste caso são as que aparecem como NA: Erro em substring(x, first, last) : invalid substring arguments
### PROBLEMA: Ao abrir a janela das variáveis utilizando o comando acima, as variáveis de interesse referentes a saúde aparecem como NA, diferentemente das demais variáveis que aparecem no banco. No dicionário as mesmas aparecerem corretamente.
Atenciosamente,
__________________________________________________ Luciane Maria Pilotto
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.

Duas postagens que falam a respeito: http://analisereal.com/2014/09/26/carregando-dados-da-pnad-no-r/ 2015-03-24 13:24 GMT-03:00 Leonardo Ferreira Fontenelle < leonardof@leonardof.med.br>:
Para ler o arquivo, você poderia em princípio usar a função read.fwf. Mas essa função não é otimizada para dados grandes, então você vai preferir alguma alternativa. Uma opção é importar com o comando laf.open do pacote LaF, e outra é transformar de largura fixa para csv com o comando fwf2csv do pacote descr, e então importar com o comando read.table do pacote data.table. Atualmente minha opção favorita é esta última. Procurando nesta lista de discussão e no stack overflow você encontra orientações detalhadas.
-- Leonardo Ferreira Fontenelle http://lattes.cnpq.br/9234772336296638
Em Ter 24 mar. 2015, às 09:52, Luciane Maria Pilotto escreveu:
Bom dia,
estou tentando ler as variáveis da PNAD de 2003 - V1701 a V1377- relacionadas ao suplemento Saúde- e as mesmas aparecem como NA. O banco está disponível no site do IBGE
http://www.ibge.gov.br/home/estatistica/populacao/trabalhoerendimento/pnad20... .
Também podem ser acessados no dropbox:
https://www.dropbox.com/sh/d0z62bg4qqyg2x3/AAAVDYWjVlb4JpUTYlQfvq-Ka?dl=0.
Estou usando os comandos abaixo:
#----------------Ler microdados da PNAD 2003 (variáveis referente ao suplemento Saúde) utilizando a função read.fwf.r ----------------------#
source(file.choose()) #carregar a função selectvar da pasta funcoes source(file.choose()) #carregar a função getdic da pasta funcoes
# Gerar os dicionários de dados a partir dos arquivos: 'input PES2003.txt' dicPNAD2003Pes <- getdic(file.choose())# abrir o arquivo input PES2003.txt, dentro da Pasta Input
head(dicPNAD2003Pes) str(dicPNAD2003Pes) nrow(dicPNAD2003Pes) dim(dicPNAD2003Pes)
# Para EXCLUSÃO do "UF" (que apresenta erro na importação por começar na mesma posição que número de controle):
dicPNAD2003Pes <- subset(dicPNAD2003Pes, cod !="UF") head(dicPNAD2003Pes) dim(dicPNAD2003Pes)
####Usar estes comandos para importar *apenas algumas variáveis* da base de dados das PESSOAS
variaveis <- selectvar(dicPNAD2003Pes) # Com a tecla CTRL pressionada, selecione as variáveis de interesse, neste caso são as que aparecem como NA: Erro em substring(x, first, last) : invalid substring arguments
### PROBLEMA: Ao abrir a janela das variáveis utilizando o comando acima, as variáveis de interesse referentes a saúde aparecem como NA, diferentemente das demais variáveis que aparecem no banco. No dicionário as mesmas aparecerem corretamente.
Atenciosamente,
__________________________________________________ Luciane Maria Pilotto
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.

Olá pessoal, a função read.fwf funciona para estes dados. Todos os comandos que descrevi funcionaram com os microdados da PNAD de outros anos, já selecionei variáveis da PNAD de 2008 e 1998. O problema está nas variáveis referentes ao suplemento saúde do banco de pessoas de 2003 que aparecem como NA, as demais variáveis deste banco estão disponíveis e permitem o uso. Entrei em contato com o IBGE para ver se é problema com o banco. Alguém baixou/usou estes dados da PNAD 2003 recentemente? Alguém conseguiu visualizar as variáveis? No dicionário as variáveis estão descritas corretamente e é possível visualizá-las diferentemente do que acontece ao acessar o banco. Att., __________________________________________________ Luciane Maria Pilotto -------------------------------------------- Em ter, 24/3/15, Rodrigo Coster <rcoster@gmail.com> escreveu: Assunto: Re: [R-br] leitura dados PNAD 2003 - variáveis V1701 a V1377 Para: "r-br@listas.c3sl.ufpr.br" <r-br@listas.c3sl.ufpr.br> Data: Terça-feira, 24 de Março de 2015, 13:28 Duas postagens que falam a respeito: http://analisereal.com/2014/09/26/carregando-dados-da-pnad-no-r/ 2015-03-24 13:24 GMT-03:00 Leonardo Ferreira Fontenelle <leonardof@leonardof.med.br>: Para ler o arquivo, você poderia em princípio usar a função read.fwf. Mas essa função não é otimizada para dados grandes, então você vai preferir alguma alternativa. Uma opção é importar com o comando laf.open do pacote LaF, e outra é transformar de largura fixa para csv com o comando fwf2csv do pacote descr, e então importar com o comando read.table do pacote data.table. Atualmente minha opção favorita é esta última. Procurando nesta lista de discussão e no stack overflow você encontra orientações detalhadas. -- Leonardo Ferreira Fontenelle http://lattes.cnpq.br/9234772336296638 Em Ter 24 mar. 2015, às 09:52, Luciane Maria Pilotto escreveu:
Bom dia,
estou tentando ler as variáveis da PNAD de 2003 - V1701 a V1377-
relacionadas ao suplemento Saúde- e as mesmas aparecem como NA. O banco
está disponível no site do IBGE
http://www.ibge.gov.br/home/estatistica/populacao/trabalhoerendimento/pnad20....
Também podem ser acessados no dropbox:
https://www.dropbox.com/sh/d0z62bg4qqyg2x3/AAAVDYWjVlb4JpUTYlQfvq-Ka?dl=0.
Estou usando os comandos abaixo:
#----------------Ler microdados da PNAD 2003 (variáveis referente ao
suplemento Saúde) utilizando a função read.fwf.r ----------------------#
source(file.choose()) #carregar a função selectvar da pasta funcoes
source(file.choose()) #carregar a função getdic da pasta funcoes
# Gerar os dicionários de dados a partir dos arquivos: 'input
PES2003.txt'
dicPNAD2003Pes <- getdic(file.choose())# abrir o arquivo input
PES2003.txt, dentro da Pasta Input
head(dicPNAD2003Pes)
str(dicPNAD2003Pes)
nrow(dicPNAD2003Pes)
dim(dicPNAD2003Pes)
# Para EXCLUSÃO do "UF" (que apresenta erro na importação por começar na
mesma posição que número de controle):
dicPNAD2003Pes <- subset(dicPNAD2003Pes, cod !="UF")
head(dicPNAD2003Pes)
dim(dicPNAD2003Pes)
####Usar estes comandos para importar *apenas algumas variáveis* da base
de dados das PESSOAS
variaveis <- selectvar(dicPNAD2003Pes) # Com a tecla CTRL pressionada,
selecione as variáveis de interesse, neste caso são as que aparecem como
NA:
Erro em substring(x, first, last) : invalid substring arguments
### PROBLEMA: Ao abrir a janela das variáveis utilizando o comando acima,
as variáveis de interesse referentes a saúde aparecem como NA,
diferentemente das demais variáveis que aparecem no banco. No dicionário
as mesmas aparecerem corretamente.
Atenciosamente,
__________________________________________________
Luciane Maria Pilotto
_______________________________________________
R-br mailing list
R-br@listas.c3sl.ufpr.br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
código mínimo reproduzível.
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível. -----Anexo incorporado----- _______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.

Bom dia, Supondo que as bases anuais tem a mesma estrutura, já tentou ler os dados de 2003 com o dicionário de outro ano? Por exemplo usar o dicionário de 2002 para os dados de 2003... Por segurança seria bom abrir e comparar os dois dicionários... Éder Comunello <c <comunello.eder@gmail.com>omunello.eder@gmail.com> Dourados, MS - [22 16.5'S, 54 49'W]

Olá Luciane, Revendo a sua primeira postagem, percebi que você quer importar as variáveis V1701 *a* V1377, e não apenas estas duas. Alssim, minha proposta de scritp anterior não lhe ajuda. Fiz uma pequena retificação que corrige isso: setwd("C:\\Users\\Marcos\\Documents\\PNAD") source("getdic.R") dic <- getdic("INPUT PES2003.TXT") dic <- subset(dic, cod != "UF") var <- subset(dic, is.na(desc))$cod var <- var[!grepl("^V14", var)] variaveis_interesse <- ifelse(dic$cod %in% var, dic$tamanho, dic$tamanho * (-1)) dados <- read.fwf("PES2003.TXT", widths=variaveis_interesse, comment.char="", strip.white=TRUE) A O objeto "var" obtem os códigos das variáveis que não tem descrição e depois exclui as que vc não deseja, que são as variáveis posteriores à variável V1377, que começam por V14. Infelizmente não tenho no momento como baixar a base de dados da PNAD para testar o script, mas acho que deve funcionar... Se vc abrir o arquivo *INPUT PES2003.TXT* vai preceber que as variáveis que vc desesa importar não possui a descrição da variável contida em um comentário, como as outras, isso inviabiliza o uso da função selectvar(). Segue abaixo um trecho do referido arquivo. @00666 V1113 $1. /* IGNORA Nº FILHOS NASC. MORTOS */ @00667 V1114 $1. /* IGNORA Nº FILHAS NASC. MORTAS */ @00668 V1701 $1. /* */ @00669 V1702 $2. /* */ @00671 V1703 $1. /* */ A pessoa do IBGE que escreveu este script de importação dos dados, ficou com preguiça de digitar as descrições destas variáveis... :) Agora se vc escrever qualquer coisa nos comentários, para não deixá-los em branco, aí vc pode voltar a usar a função selectvar(), Por exemplo: @00666 V1113 $1. /* IGNORA Nº FILHOS NASC. MORTOS */ @00667 V1114 $1. /* IGNORA Nº FILHAS NASC. MORTAS */ @00668 V1701 $1. /* V1701 */ @00669 V1702 $2. /* V1702 */ @00671 V1703 $1. /* V1703 */ Bem, espero que isso lhe ajude. Abs. Em 25 de março de 2015 11:41, Éder Comunello <comunello.eder@gmail.com> escreveu:
Bom dia,
Supondo que as bases anuais tem a mesma estrutura, já tentou ler os dados de 2003 com o dicionário de outro ano? Por exemplo usar o dicionário de 2002 para os dados de 2003...
Por segurança seria bom abrir e comparar os dois dicionários...
Éder Comunello <c <comunello.eder@gmail.com>omunello.eder@gmail.com> Dourados, MS - [22 16.5'S, 54 49'W]
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
-- Marcos F. Silva http://sites.google.com/site/marcosfs2006
participantes (5)
-
Leonardo Ferreira Fontenelle
-
Luciane Maria Pilotto
-
Marcos Silva
-
Rodrigo Coster
-
Éder Comunello