Verificar se alguma das colunas é missing no SAS

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”

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *