os valores em falta tratar como de zero em SAS onde cláusula
-
22-07-2019 - |
Pergunta
Existe um equivalente da função do Oracle NVL em SAS?
Por exemplo, se eu tiver uma cláusula onde, em SAS que diz:
where myVar > -2;
não está indo para incluir quaisquer linhas que têm myVar =.
Se eu quiser tratar valores ausentes como zero, eu tenho que dizer:
where myVar > -2 or missing( myVar )
Eu gostaria de ser capaz de fazer algo como:
where NVL( myVar, 0 ) > -2 // or some SAS equivalent
Existe algo parecido com isso no SAS?
Solução
O coalesce função deve fazer o trabalho.
where coalesce(myVar,0) > -2
Eu não tenho certeza se a função tornou-se disponível em SAS 9, por isso, se você tiver uma versão muito antigo SAS este pode não funcionar.
Outras dicas
Usando a função coalesce é o caminho certo para fazer isso.
Mas se você tem uma versão antiga do SAS, onde se aglutinam não for implementado, você pode usar esse truque:
where sum(myVar,0) > -2
Se você usar a função soma em SAS para a adição, qualquer número não falta no somatório forçará o resultado a ser não-falta.
Assim, adicionando 0 com a função soma irá transformar um valor faltando a 0, e os valores não omissas permanecerá inalterado.
Uma coisa que pode fazer é y gostar matriz varlistname var1 var2 var3 varn; se a matriz <>. então a saída;
Ele vai ouput conjuntos de dados com valores não ausentes