SAS: Как включить нули или отсутствующие значения при вычислении медианы, минимума и максимума?

Я пытаюсь рассчитать медианное, минимальное и максимальное значение для нескольких переменных за последние 5 лет в Base SAS. Некоторые из переменных не имели случаев заболеваний в некоторые годы, поэтому 0 случаев. Когда я рассчитываю сводку в SAS, я хочу включить эти нули.

Например: одна из моих переменных, скажем, X, имела 8, 6, 2, 0, 0 случаев за последние 5 лет соответственно. Когда я вычисляю сводку по этой переменной с помощью «proc-sql» или «proc-means», SAS игнорирует эти 0 и дает мне что-то отличное от того, что я ожидал. Я хотел бы получить Min = 0, Max = 8 и Median = 2, но SAS дает мне Min = 2, Max = 8 и Median = 6, поскольку он игнорирует нули.

Любое предложение или направление будут оценены?


person Tivos Jar    schedule 01.11.2018    source источник
comment
если min равно 0, то у вас будет ноль. вы имеете в виду, что у вас не было никаких значений за этот год / месяц. не могли бы вы предоставить образец набора данных и образец вывода   -  person Kiran    schedule 02.11.2018


Ответы (2)


Если у вас действительно отсутствуют данные, вы можете заменить их нулями с помощью PROC STDIZE (при условии, что у вас есть SAS / STAT).

proc stdize data=have out=want replace; run;
person Craig Srsen    schedule 02.11.2018
comment
Я заменил отсутствующие данные на 0 на этапе данных, добавив: Options missing = '0'; Я хочу включить эти 0 при подсчете итоговой суммы. Как я уже упоминал в вопросе, я хочу, чтобы минимум был равен 0, а не 2, который дает мне SAS, поскольку он не включает эти нули при вычислении сводной статистики. - person Tivos Jar; 02.11.2018

SAS будет включать 0, он не будет включать отсутствующие. Возможно, у вас есть формат поверх вашей переменной, который показывает его как 0, когда он действительно отсутствует. Попробуйте удалить формат и посмотрите, так ли это, в противном случае это поведение SAS по умолчанию.

Вы можете удалить форматы, используя:

format var; *note lack of format, which removes the format;

Или, если вы установите option missing на 0, тогда он будет отображаться как 0, но базовое значение все еще отсутствует и не будет включено. Вам действительно нужно изменить значения на 0.

person Reeza    schedule 02.11.2018
comment
Я заменил отсутствующие данные на 0 на этапе данных, добавив: Options missing = '0'; Есть ли способ заставить SAS вычислить медиану (8, 6, 2, 0, 0) и дать 2 в качестве результата вместо 6? Он дает 6, потому что игнорирует эти 0. То же самое было минимумом (8, 6, 2, 0, 0) = 0 вместо 2. - person Tivos Jar; 02.11.2018
comment
Отсутствие параметров ничего не заменяет, просто отображается как 0, аналогично тому, как работает формат. Базовые данные по-прежнему отсутствуют и не будут включены. - person Reeza; 02.11.2018
comment
Это объясняет, почему SAS не выводит то, что я ожидал. Не могли бы вы предложить способ заменить отсутствующие значения нулями? У меня есть несколько столбцов / переменных с пропущенными значениями, и я хотел бы заменить их на 0 для расчета сводной статистики. Будет ли работать в этом случае простой оператор if? - person Tivos Jar; 02.11.2018
comment
@TivosJar вы не пробовали решение от Крейга ниже? Он работает, чтобы заменить все числовые значения на 0. Если вам нужны конкретные переменные, вы можете их перечислить. В противном случае, если это сложнее, да, оператор IF будет работать нормально. - person Reeza; 02.11.2018
comment
Я попробовал решение, предложенное Крейгом. Однако я получаю предупреждающее сообщение ПРЕДУПРЕЖДЕНИЕ: оценщик шкалы для переменной XYZ меньше или равен 0. Переменная XYZ не будет стандартизирована, и ее оценщику шкалы присваивается отсутствующее значение. Он также заменил все неотъемлемые целые числа на десятичные. Я только хочу заменить отсутствующие значения на 0, а не стандартизировать весь набор данных. Я здесь что-то не так делаю? - person Tivos Jar; 02.11.2018
comment
non-missing whole numbers to decimals Я думаю, он просто изменил формат, а не значение. SAS имеет только два типа: числовой / символьный. - person Reeza; 02.11.2018