base SAS programming学习笔记12(do loop)

1.DO 循环的基本格式如下:

        do index-variable=start  TO stop BY increment

                sas statements

        end;

index-variable 存储的是当前循环的值,默认increment是1,每次循环的增量是1;

如下:do i=1 to 5,i的取值分别是1,2,3,4,5

           do j=2 to 12 by 2,j的取值分别是2,4,6,8,10,12;

也可以反向读取,如do i=5 to 1 by -1;

举例如下:

data  finance;

        Amount=1000;

        Rate=.075/12;

        do month= 1 to 12;

                Earned+(amount+earned)*rate;

        end;

runl

结果如下:

 在上述程序中earned由于链接的是“+”,因此值都是保留到下一行,到第12月份仍然在执行循环,该循环完毕后month增至13,此时终止循环,因此输出的month=13;

do index-variable=value1,value2,value3.......;

        sas statement;

end;

value1,value2,value3........要么全部是数值变量,要么全部是字符变量或者变量名(如果是变量值则取变量名里面每行的值进行计算)

举例如下:

结果如下:

2.DO loop循环嵌套

3.DO UNTIL 循环

        do until(condition)

                sas statement;

        end;

condition直到循环的底部才进行评估;所以do until循环至少循环一次;如果condition评估为真,则循环终止。

举例如下:

4.DO WHILE循环

        do while(condition)

                sas statement;

        end;

与do unitl 循环不同的是,do while循环是在每次循环开始前进行评估,评估为真才开始执行循环。

举例说明:

如上所示,如果初始的capital小于5000,则该循环不会执行

5.可以将do index-variable=start to stop 和unitl或者while条件联用,类似于and的关系都满足执行标准则执行循环,任意条件满足终止即终止循环,基本格式如下:

如果选择用until(expression)在do循环底部进行评估,循环至少执行一次;选择用while(expression)在do循前评估,则如果不满足条件一次循环都不执行。

如上程序所示,循环超过10次或在capital超过5000均停止执行循环。

6.创建样本数据

        可以使用do loop循环来执行对读取数据进行抽样

当使用point来指定行数读取的时候,需要使用stop避免结束读入数据的指针而引起连续读入该行数据,由于STOP会停止执行DATA步则不会将PDV的数据输出至输出数据集,因此需要加上OUTPUT来输出数据,将OUTPUT放入循环中则每次循环的数据都输出,如果放至循环外则只有最后一行数据输出。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值