SAS: Do 实现循环

阅读: 评论:0

SAS: Do 实现循环

SAS: Do 实现循环

SAS中使用DO END可以实现执行一组语句,或者实现循环。

 

1. 实现执行一组语句

语法如下:

DO;

 SAS statements

END;

在DO和END之间可以有多条SAS语句

 

2. 循环

比如有一项复利投资,每年的收益是4%,初始资金为1000元,问10年后回报是多少?

程序如下:

data tmp1;Amount=1000;Rate=0.04;do year=1 to 10;Amount+Amount*Rate;end;
run;proc print data=tmp1;
run;

其中do和end之间的是循环体,循环条件是year=1 to 10,即year会遍历1至10之间的所有值。最后year变成11的时候,不满足循环条件,结束。

 

输出如下:

ObsAmountRateyear
11480.240.0411

现在有一个问题就是结果数据集中只有一条观测,如果想把每一次循环时的值都存起来怎么办? 可以在循环体中加一个output语句,示例如下:

data tmp1;Amount=1000;Rate=0.04;do year=1 to 10;Amount+Amount*Rate;output;end;
run;proc print data=tmp1;
run;

输出如下:

ObsAmountRateyear
11040.000.041
21081.600.042
31124.860.043
41169.860.044
51216.650.045
61265.320.046
71315.930.047
81368.570.048
91423.310.049
101480.240.0410

注意,输出中只有10条记录,Year最大值为10,其实是output语句将原来的结果覆盖了。

 

倒序循环条件

循环条件可以倒序的,语法为 index-variable=5 to 1 by -1,示例如下:

 

index-variabel为给定值

可以指定index-variable为固定某些值,示例:

注意,这些给定值可以是字符,也可以数字,如果是字符必须加引号。 多个值之间用逗号隔开。

 

嵌套循环

DO END可以嵌套在DO END之中,比如下面的3*3乘法表

 

do until和do while

循环条件可以是do until(express) 或者 do while(express)。

其中前者表示达到条件时,循环结束,这里的循环体至少执行一次(它是先执行循环体,再判断条件);

后者表示,只要满足条件,就继续循环,这里的循环体可能一次都不会执行(它是先判断条件,再执行循环体)。

例如计算从1加到100,两种方法如下:

 

其中while(i <= 100)表示只要 i 小于等于100,就继续循环; unilt(i > 100)表示只要 i 大于100就停止循环。

本文发布于:2024-01-29 08:15:04,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170648730913920.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

下一篇:SAS初学者笔记
标签:SAS
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23