我正在研究一个问题,有些事情我不明白。
数据集sasdata.prdsales包含5,000个观测结果。
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打印语句,我认为从观察号100开始,以观察号499结束,将处理500个观测结果。
对于PROC方法步骤,OBS=MAX指示SAS处理所有的观测,但是由于开始观测是从500个,所以观测的总数将从500个到5000个,即4501个观测。
但是,这个问题的答案是,PROC打印有501个观察,我很困惑.
谢谢。
发布于 2018-10-21 23:47:53
OBS=不是要处理的观察数,您应该把它看作是一个LASTOBS=选项(不存在)。
仅OBS=500就将处理500行,因为隐式FIRSTOBS为1。
对于FIRSTOBS=100 OBS=500的有效情况,将处理100到500行,即401行。
发布于 2018-10-22 04:16:35
使用较小的数字,以便更容易检查您的手指。
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,可以让它跳过N1观测。所以FIRSTOBS=100的意思是跳过99个观测。500-99=401
https://stackoverflow.com/questions/52920619
复制相似问题