Обрабатывать пропущенные значения как ноль в SAS, где предложение

StackOverflow https://stackoverflow.com/questions/1040543

  •  22-07-2019
  •  | 
  •  

Вопрос

Есть ли в 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?

Это было полезно?

Решение

функция объединения должна сделай работу.

where coalesce(myVar,0) > -2

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

Другие советы

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

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

where sum(myVar,0) > -2

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top