SAS中文论坛
标题:
求教:SAS中retain的用法
[打印本页]
作者:
shiyiming
时间:
2012-2-12 16:54
标题:
求教:SAS中retain的用法
请教友友,retain后的变量在读取数据是第一个数值是如何定义的?
比如:
01 data out ;
02 retain d;
03 input a b ;
04 c=max(a,b);
05 d=max(c,d);
06 cards;
1 2
3 4
5 8
6 7
;
proc print;run;
/*当程序第一次运行到05行时,此时的d=?*/
/*本人新手,谢谢指导*/
作者:
shiyiming
时间:
2012-2-17 16:32
标题:
Re: 求教:SAS中retain的用法
这里d没有赋予初始值,所以当第一次运行到05时,d的值就是0,也就是缺失值.所以此时它和c=2比较,然后d=2
下次循环,c=4,由于有retain,使得d的值为上次循环的结果即为2,与c比较得到4...每次得到c的值,它都与上次得到的d值相比较,
这样就得到了d的值了.
作者:
shiyiming
时间:
2012-2-18 22:51
标题:
Re: 求教:SAS中retain的用法
[quote="leon_sas":2mp41br3]这里d没有赋予初始值,所以当第一次运行到05时,d的值就是0,也就是缺失值.所以此时它和c=2比较,然后d=2
下次循环,c=4,由于有retain,使得d的值为上次循环的结果即为2,与c比较得到4...每次得到c的值,它都与上次得到的d值相比较,
这样就得到了d的值了.[/quote:2mp41br3]
多谢leon_sas,其实我开始是这么猜想的,反推的,不确定!sas系统就是这么默认的吗?
再请教:
01 do until (prod gt 6);
02 prod+1;
03 end;
04 run;
05 proc print;run;
以上程序中,我将01行()中的参数先去掉了gt,output结果不变;
后又去掉了prod和gt,结果还是和前两次一样!
在这里prod的初始值是不是也是0?
gt又是什么意义?
请教...
作者:
shiyiming
时间:
2012-2-23 13:01
标题:
Re: 求教:SAS中retain的用法
gt的是大于的意思,即greater than。do until是这样一种循环,prod每循环一次就自动加上1,直到它的值大于6就终止循环。所以返回的结果自然为7了。如果符号是ge(greater or equal than)大于等于6,则返回结果为6了。我觉得这里prod的初始值应该是0。
欢迎光临 SAS中文论坛 (http://www.mysas.net/forum/)
Powered by Discuz! X3.2