美文网首页
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