Já vimos algumas formas de lidar com variáveis missing, tanto no post Tutorial: Proc Sql (SAS), quando no Formas de deletar linhas com Missing no SAS. Mas essas são formas de olhar para uma variável e excluir a linha. E se quisermos olhar para todas as variáveis?
Há algumas formas. Como de costume, primeiro vamos montar uma tabela para usar como exemplo:
DATA EXEMPLO; INPUT ID $ UF $ VLR_COMPRA; CARDS; AA123 SP 1000 BB001 MG 1500 AA010 BA 1650 AA003 BA 1900 . SP 1520 . PE 1575 . . 1000 AA111 PE . ; RUN;
Começamos vendo alguns novos exemplos de como excluir a linha caso determinada variável numérica seja missing:
DATA EXEMPLO_EXCLUI_MISSING; SET EXEMPLO; IF NMISS( OF VLR_COMPRA ) THEN DELETE ; RUN;
E também um exemplo de como trazer somente as linhas em que determinada variável numérica seja missing:
DATA EXEMPLO_TRAZ_MISSING; SET EXEMPLO; IF NMISS( OF VLR_COMPRA ) ; RUN;
Análogo ao NMISS, temos o CMISS para variáveis do tipo texto:
DATA EXEMPLO_EXCLUI_MISSING; SET EXEMPLO; IF CMISS( OF ID ) THEN DELETE ; RUN;
DATA EXEMPLO_TRAZ_MISSING; SET EXEMPLO; IF CMISS( OF ID ) ; RUN;
Agora, para validar todos os campos tipo texto que você tem, utilize o argumento _character_ e contabilize os missing:
DATA EXCLUI_TODAS_VARIAVEIS_TEXTO; SET EXEMPLO; IF CMISS(OF _CHARACTER_) > 0 THEN DELETE; RUN ;
Analogamente, pode-se usar _numeric_. para variáveis numéricas.
Se você quiser validar se todos os campos estão preenchidos e deletar as linhas que tiverem alguma variável missing, utilize os dois juntos:
DATA EXCLUI_TODAS_MISSING; SET EXEMPLO; IF NMISS(OF _NUMERIC_) OR CMISS(OF _CHARACTER_) THEN DELETE; RUN ;
Cabe a ressalva de que para fazer um modelo, o ideal não é deletar campos missing. Perde-se muita informação, além de poder enviesar o modelo. Mas isso será assunto para outro post.
Bons estudos!
Um comentário em “Verificar se alguma das colunas é missing no SAS”