我想知道是否有一种方法可以检测数据集是否为空,即它没有观察值。或者换句话说,如何获得特定数据集中的观察值数量。
这样我就可以写一个If语句来设置一些条件。
谢谢。
发布于 2011-04-14 18:07:14
使用PROC SQL很容易。执行计数并将结果放入宏变量中。
proc sql noprint; select count(*) into :observations from library.dataset; quit;
发布于 2011-04-14 21:59:03
有很多不同的方法,我倾向于在 open() 和 attrn() 中使用宏函数。下面是一个简单的例子,大多数情况下效果都很好。如果您要处理数据视图或更复杂的情况,如具有标记为删除或活动where子句的记录的数据集,则可能需要更健壮的逻辑。
open()
attrn()
%macro nobs(ds); %let DSID=%sysfunc(OPEN(&ds.,IN)); %let NOBS=%sysfunc(ATTRN(&DSID,NOBS)); %let RC=%sysfunc(CLOSE(&DSID)); %mend;