PROC PRINT и PROC MEANS - PullRequest
       8

PROC PRINT и PROC MEANS

0 голосов
/ 22 октября 2018

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

Набор данных 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 наблюдение, и я в замешательстве ...

Спасибо.

Ответы [ 2 ]

0 голосов
/ 22 октября 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

Итак, все началось с obs # 5 и остановилось на obs # 10.10-5 + 1 = 6.

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

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

0 голосов
/ 22 октября 2018

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

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

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

...