首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PROC打印和PROC方法

PROC打印和PROC方法
EN

Stack Overflow用户
提问于 2018-10-21 22:57:21
回答 2查看 675关注 0票数 1

我正在研究一个问题,有些事情我不明白。

数据集sasdata.prdsales包含5,000个观测结果。

代码语言:javascript
复制
 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个观察,我很困惑.

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-21 23:47:53

OBS=不是要处理的观察数,您应该把它看作是一个LASTOBS=选项(不存在)。

OBS=500就将处理500行,因为隐式FIRSTOBS为1。

对于FIRSTOBS=100 OBS=500的有效情况,将处理100到500行,即401行。

票数 5
EN

Stack Overflow用户

发布于 2018-10-22 04:16:35

使用较小的数字,以便更容易检查您的手指。

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52920619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档