Postado por: Fernando Rosa
Num trabalho de verificação de qualidade de uma base de dados, a verificação do número de missings em cada variável costuma ser um item rotineiro. Uma maneira genérica e eficiente de fazer esta verificação é através do uso de um formato personalizado e do PROC FREQ.
Primeiro criamos dois formatos (um para variável numérica outro para caracter):
proc format;
value checkNA
. = 'Missing'
other = 'Non-Missing';
value $ checkNAchar
' ' = 'Missing'
other = 'Non-Missing';
run;
Atente para o espaço entre as aspas simples no caso do formato para caracter. Agora basta rodar o PROC FREQ, assumindo que var1 seja numérica e que var2 seja caracter:
proc freq data=teste;
tables var1 var2 / missing;
format var1 checkNA. var2 $checkNAchar.;
run;
Obs: post em resposta a dúvida postada na lista SASBrasil em 19/05/2008.
Primeiro criamos dois formatos (um para variável numérica outro para caracter):
proc format;
value checkNA
. = 'Missing'
other = 'Non-Missing';
value $ checkNAchar
' ' = 'Missing'
other = 'Non-Missing';
run;
Atente para o espaço entre as aspas simples no caso do formato para caracter. Agora basta rodar o PROC FREQ, assumindo que var1 seja numérica e que var2 seja caracter:
proc freq data=teste;
tables var1 var2 / missing;
format var1 checkNA. var2 $checkNAchar.;
run;
Obs: post em resposta a dúvida postada na lista SASBrasil em 19/05/2008.
O SAS tem um suporte muito bom para manipulação de grandes conjuntos de dados, e em particular, as ferramentas de importação são bem extensivas. Através do uso de DATA STEPs e dos comandos INFILE/INPUT com os parâmetros apropriados é possível ler uma variedade grandes de formatos de arquivos dos mais estranhos possíveis (como conjuntos de dados com número variáveis de registros, com tamanhos variáveis e com número de linhas diferentes).
Já trabalhei uma vez por exemplo com um código em SAS que lia em um conjunto de dados a saída de um programa de ERP que imprima saídas de texto no formato de impressão para impressoras matriciais (estilo CLIPPER).
Outro dia entretanto fui pego de surpresa pelo tamanho padrão do buffer de leitura do SAS para arquivos texto. Tinha que ler um conjunto de dados que fora exportado para txt, com um número grande de variáveis (mais de 400, algumas delas tipo texto). Depois de escrever o longo INFILE/INPUT apropriados o SAS processava sem problemas, e lia as primeiras 50 a 60 variáveis sem problema. Depois disso, a partir de uma variável que parecia escolhida ao acaso (as vezes era a 51a., as vezes a 52a. , 53a...) tudo vinha como missing.
Até que pesquisando no log encontrei um warning do seguinte tipo, bem discreto:
The maximum record length was 256.
Já trabalhei uma vez por exemplo com um código em SAS que lia em um conjunto de dados a saída de um programa de ERP que imprima saídas de texto no formato de impressão para impressoras matriciais (estilo CLIPPER).
Outro dia entretanto fui pego de surpresa pelo tamanho padrão do buffer de leitura do SAS para arquivos texto. Tinha que ler um conjunto de dados que fora exportado para txt, com um número grande de variáveis (mais de 400, algumas delas tipo texto). Depois de escrever o longo INFILE/INPUT apropriados o SAS processava sem problemas, e lia as primeiras 50 a 60 variáveis sem problema. Depois disso, a partir de uma variável que parecia escolhida ao acaso (as vezes era a 51a., as vezes a 52a. , 53a...) tudo vinha como missing.
Até que pesquisando no log encontrei um warning do seguinte tipo, bem discreto:
The maximum record length was 256.
» Ler mais
18/05: Bem vindos
Boa noite,
Este blog nasceu como complemento ao meu tutorial Aprenda SAS e ao grupo de discussão SASBrasil do Yahoo.
A idéia é organizar e postar as dicas que são divulgadas na lista, assim como divulgar referências interessantes para se aperfeiçoar no uso do ambiente e trocar experiências sobre o seu uso no mercado.
Atenciosamente,
Os administradores,
Este blog nasceu como complemento ao meu tutorial Aprenda SAS e ao grupo de discussão SASBrasil do Yahoo.
A idéia é organizar e postar as dicas que são divulgadas na lista, assim como divulgar referências interessantes para se aperfeiçoar no uso do ambiente e trocar experiências sobre o seu uso no mercado.
Atenciosamente,
Os administradores,