SAS判断数据集观测数量

最近计划离职,工作逐渐交接出去。很奇怪,忙的时候满心全是吐槽,到了交接的时候反而很不舍。所以想给自己找点事情做,一方面看看书提高自己的认知,另一方面三言两语写点小知识点分享一下。毕竟自己碰到不会的就会到去各种帖子各种微信群拿来主义~

因为ODS无法输出空数据集,所以在制作宏程序批处理数据集的时候,要判断为空的数据集,给其增加一行数据:no listing。以保证所有数据集均不为空。本篇主要记录如果判断数据集的观测数,并将其放入宏变量。

*1.使用DATA步获取信息, call symput() 动作放入宏变量;
data _null_;
  set SASHELP.CARS nobs=nobs;
  call symput("nobs", nobs);
run;
%put &nobs.;
#output: 428
**************************************************************;
*2.没有直接打开数据集的情况下利用open函数获取信息,let语句放入宏变量;
%let dsid = %sysfunc(open(SASHELP.CARS, i));
%let n=%sysfunc(attrn(&dsid,nobs));
%let rc=%sysfunc(close(&dsid));
%put &n.;
#output: 428
**************************************************************;
*3.使用PROC步,SQL获取信息, into子句放入宏变量;
PROC SQL noprit;
  select count(*) into :num from SASHELP.CARS;
quit;
%put &num .;
#output: 428

这里顺带提一句,上面其实也用到了制作宏变量常用的三种方法:

1.%LET 语句;
2.DATA步中的 call symput();
3.SQL into子句;

结束收工!其实写这东西还是有点好处的,现在我工作过程中用python越来越多,稍微写下blog也能帮助自己加深记忆。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容