SAS по команде приводит к отсутствию наблюдения - PullRequest
0 голосов
/ 10 мая 2018

Я изучал SAS самостоятельно, но по команде возникла проблема.

Пример данных:

enter image description here

Оригинальный код в порядке:

proc print data = sashelp.class;
    var name sex age height weight;
    where age > 14;
    sum weight;
run;

Но когда я добавил команду:

proc print data = sashelp.class;
    var name sex age height weight;
    where age > 14;
    sum weight;
    by age;
run;

Выходы представлены следующим образом:

enter image description here

Что странно, что наблюдения 17 и 19 отсутствуют. Не могли бы вы сказать мне, почему и как это решить? Спасибо.

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Просто добавьте ключевое слово notsorted в оператор by; Это будет обрабатывать несортированные данные без предшествующего оператора proc sort.

proc print data = sashelp.class ;
    var name sex age height weight;
    where age > 14;
    sum weight;
    by age notsorted;
run;
0 голосов
/ 10 мая 2018

Если вы проверите свой журнал, вы найдете ошибку:

ERROR: Data set SASHELP.CLASS is not sorted in ascending sequence. The current BY group has Age = 16 and the next BY group has Age = 15.

При использовании обработки по группам данные должны быть отсортированы или проиндексированы с помощью переменной by.

Поскольку данные обрабатываются, SAS ожидает, что они уже упорядочены или будут иметь индекс, содержащий порядок.

Первые три наблюдения оказываются уже в правильном порядке, возрастая с 15 до 16. Как только он добирается до 4-го наблюдения, он видит, что значение по группе равно 15. Затем произойдет ошибка, остановите обработку, и в случае PROC PRINT выведите результаты, полученные до ошибки. Вы можете решить это, отсортировав sashelp.class:

proc sort data=sashelp.class
          out=class;
    by age;
run;

proc print data = class;
    var name sex age height weight;
    where age > 14;
    sum weight;
    by age;
run;

Процедуры SAS обычно не сортируют автоматически по группам. Они должны быть отсортированы или проиндексированы перед использованием.

...