美文网首页
SAS 程序冷知识——if 0 then set的妙用

SAS 程序冷知识——if 0 then set的妙用

作者: 生物统计与SAS研究员 | 来源:发表于2022-04-20 13:50 被阅读0次

有一个数据集,当他没有观测的时候,给宏变量x赋值0,否则赋值1。如果用以下代码会出现错误。

data _null_;

set dataset nobs=k;

if k=0 then call symput('x','0');

else call symput('x','1');

run;

因为如果dataset这个数据集没有观测,那么以上data步就不会在PDV运行,后面的if语句也不会执行。这个时候if 0 then set就有用了。如果把代码改成:

data _null_;

if 0 then set dataset nobs=k;

if k=0 then call symput('x','0');

else call symput('x','1');

run;

以上代码就可以运行,因为set不会真正执行,因此data步相当于运行一个没有set的过程步,此时他的观测数是1,但由于在编译阶段,set和nobs都会执行,因此k又是有值的,所以这段代码不论数据集是否观测为0,都可以正常运行。

相关文章

网友评论

      本文标题:SAS 程序冷知识——if 0 then set的妙用

      本文链接:https://www.haomeiwen.com/subject/lndvertx.html