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