Formas de deletar linhas com Missing no SAS

Neste post, vamos ver algumas formas de se deletar uma linha no SAS, caso tenhamos campos missing. Para os exemplos abaixo, utilizar os seguintes dados:

data exemplo;
    input id $ valor;
    cards;
 AB555 350
 AB444 444
 AA123 475
 AB667 .
 . 444
 . .
 ;
run;

Note que temos algumas situações aí: uma linha com apenas a primeira coluna missing; uma linha com apenas a segunda coluna missing; uma linha com todos os campos missing. Além disso, temos que o primeiro caso é uma string e o segundo um número. Vamos ver como tratá-los:

  1. Deletar a linha inteira, se algum campo qualquer (definido pelo usuário) estiver missing:
    /*deleta a linha qdo o campo id for missing*/
    data exemplo_deleta;
        set exemplo;
        if id eq "" then delete;
    run;
    
    /*deleta a linha qdo o campo valor for missing*/
    data exemplo_deleta;
        set exemplo;
        if valor eq . then delete;
    run;
  2. Deletar a linha linha inteira ,se todos os campos estiverem missing:
    options missing = ' ' ;
    data deleta_linha_missing;
        set exemplo;
        if missing(cats(of _all_)) then delete;
    run;

O options nesse caso é utilizado para apresentar os valores missing como se fosse um espaço vazio. Como a função CATS irá concatenar todos os valores, retirando os espaços em branco, será como se a função missing estivesse olhando para um único campo vazio. Por esse motivo, excluirá a linha inteira quando todos os campos estiverem vazios.

Espero ter ajudado. Infelizmente não estou conseguindo usar o ‘print’ do SAS University no Safari, então por enquanto o post ficará sem as figuras das tabelas. Mas creio que deu para entender bem.

Se você gostou desse conteúdo, deixe um comentário, uma curtida e/ou compartilhe o blog com seus colegas. Vocês não tem ideia de como qualquer ajudinha dessas, faz a diferença. Abraços e bons estudos!

4 comentários em “Formas de deletar linhas com Missing no SAS”

Deixe um comentário

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