Обрабатывать пропущенные значения как ноль в SAS, где предложение
-
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 < > ;. затем вывод;
Он будет выводить наборы данных, имеющие не пропущенные значения