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?

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top