美文网首页Data Science 学习小站
SAS data步循环机制--set 于循环语句中

SAS data步循环机制--set 于循环语句中

作者: lixin_ggao | 来源:发表于2019-10-11 05:02 被阅读0次

    理解SET 循环机制 --对应123 题 -base Q87 :

    • set 为隐式循环,整个data 步读取set 数据集,直到set 数据集读取完毕后 data 步自动停止执行,读至run 语句后清空pdv(retain 除外),data 步中,没有output 输出时,于run 语句时执行output 到默认数据集当中。
    • set 在每个data步/do 循环中,读取一条数据(每次循环数据指针下移至下个观测),也就是说,一条set 的执行对应且仅对应一条观测,且观测唯一。

    原题:(set 至于do 循环中)

    The SAS data set BANKS is listed below:
    BANKS
    name rate
    FirstCapital0.0718
    DirectBank0.0721
    VirtualDirect0.0728
    The following SAS program is submitted:
    data newbank;
    do year = 1 to 3;
    set banks;
    capital + 5000;
    end;
    run;

    • 其输出仅有一条obs , 对应四个variable :
      year name rate capital
      4 VirtualDirect 0.0728 15000
      程序在第三条obs读取完结束。Do 语句中 默认结束year =year+1,year=4 ; "+" 默认在data(implicit loop) 和Do中(explicit loop中)保持pdv中的值。

    考虑以下变形:

    test_db.test1.png

    data aa;
    do year = 1 to 3;
    set test_db.test1;
    capital + 5000;
    put @5"inloop:" _all_;
    end;
    put @1"data: outloop"_all_;
    run;

    • 结果如下(使用Put 输出到日志)


      log.png
    • 数据集:


      dataset aa.png

      其中只有第 3, 6 条obs 顺利输出!,year =4 !

    相关文章

      网友评论

        本文标题:SAS data步循环机制--set 于循环语句中

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