ПРОЦЕДУРА ПЕЧАТИ и ПРОЦЕДУРЫ

Я работаю над проблемой, но кое-что не понимаю.

Набор данных sasdata.prdsales содержит 5000 наблюдений.

 libname sastemp 'SAS-data-library';
      options obs=500;
      proc print data=sasdata.prdsales (firstobs=100);
 run; 
 options obs=max;
 proc means data=sasdata.prdsales(firstobs=500);
 run;

Насколько я понимаю, OBS = указывает количество наблюдений, которые будет обрабатывать SAS, поэтому для оператора PROC PRINT я думаю, что, начиная с наблюдения номер 100 и заканчивая наблюдением номер 499, будет обработано 500 наблюдений.

Для шага PROC MEANS параметр OBS = MAX указывает SAS на обработку всех наблюдений, но поскольку начальное наблюдение - от 500, общее количество наблюдений будет от 500 до 5000, что составляет 4501 наблюдение.

Однако ответ на этот вопрос говорит о том, что PROC PRINT имеет 501 наблюдение, и я смущен ...

Спасибо.


sas
person hyg17    schedule 21.10.2018    source источник
comment
Откуда возникает вопрос? Мне это тоже кажется неправильным, но не по причинам, о которых вы думаете.   -  person Reeza    schedule 22.10.2018
comment
Это из экзамена Acualtests.com Exam A00-201, вопрос 2. У меня есть только PDF-файл, который был создан на основе этих проблем, поэтому определенно есть некоторые опечатки и странные отображения данных ... но я не хочу приводить просто говорю, что это пока опечатка.   -  person hyg17    schedule 22.10.2018
comment
Это не опечатка, это просто неправильно, но вы получаете то, за что платите. Я настоятельно рекомендую бесплатные электронные курсы SAS, если вы еще не прошли их.   -  person Reeza    schedule 22.10.2018


Ответы (2)


OBS= - это не количество наблюдений для обработки, вы должны думать об этом как о LASTOBS= опции (которой не существует)

Только OBS=500 обработает 500 строк из-за неявного значения FIRSTOBS равным 1.

Для эффективного случая FIRSTOBS=100 OBS=500 будут обрабатываться строки со 100 по 500 или 401 строка.

person Richard    schedule 21.10.2018
comment
Спасибо за вашу помощь, я смог понять в чем дело. - person hyg17; 22.10.2018

Используйте меньшие числа, чтобы их было легче проверить на пальцах.

1    options obs=10;
2    proc print data=sashelp.class(firstobs=5);
3    run;

NOTE: There were 6 observations read from the data set SASHELP.CLASS.

Obs    Name       Sex    Age    Height    Weight

  5    Henry       M      14     63.5      102.5
  6    James       M      12     57.3       83.0
  7    Jane        F      12     59.8       84.5
  8    Janet       F      15     62.5      112.5
  9    Jeffrey     M      13     62.5       84.0
 10    John        M      12     59.0       99.5

Итак, все началось с обследования №5 и закончилось обследованием №10. 10-5 + 1 = 6.

Итак, для вашей задачи вы можете вычислить 500-100 + 1 = 401.

Другой способ думать об этом - установить FIRSTOBS = N, чтобы он пропустил N-1 наблюдений. Итак, FIRSTOBS = 100 означает пропустить 99 наблюдений. 500-99 = 401.

person Tom    schedule 22.10.2018