Обрабатывать пропущенные значения как ноль в SAS, где предложение - PullRequest
7 голосов
/ 24 июня 2009

Есть ли в SAS эквивалент функции Oracle NVL?

Например, если у меня есть предложение where в SAS, которое говорит:

where myVar > -2;

это не будет включать строки, которые имеют myVar =.

Если я хочу обработать пропущенные значения как ноль, я должен сказать:

where myVar > -2 or missing( myVar )

Я бы хотел иметь возможность сделать что-то вроде:

where NVL( myVar, 0 ) > -2 // or some SAS equivalent

Есть ли что-то подобное в SAS?

Ответы [ 3 ]

13 голосов
/ 25 июня 2009

Функция объединения должна выполнять эту работу.

where coalesce(myVar,0) > -2

Я не уверен, стала ли эта функция доступной в SAS 9, поэтому, если у вас действительно старая версия SAS, она может не работать.

7 голосов
/ 26 июня 2009

Использование функции объединения - правильный способ сделать это.

Но если у вас есть старая версия SAS, в которой объединение не реализовано, вы можете воспользоваться этим трюком:

where sum(myVar,0) > -2

Если вы используете для суммирования функцию суммирования в SAS, любое не пропущенное число в суммировании приведет к тому, что результат будет отсутствующим.

Таким образом, добавление 0 с помощью функции sum преобразует отсутствующее значение в 0, а не пропущенные значения останутся неизменными.

0 голосов
/ 10 июня 2010

Одна вещь, которую вы можете сделать, это лайк массив varlistname var1 var2 var3 varn; если массив <>. затем вывод;

Он будет выводить наборы данных, имеющие не пропущенные значения

...