SAS中文论坛
标题:
求助
[打印本页]
作者:
shiyiming
时间:
2009-2-10 16:55
标题:
求助
SAS中有没有专门进行迭代的程序过程啊,这里的迭代与循环是不同的,一个循环是至少有两个出口,一个是循环的次数,例如do i=1 to 5,最多可以循环5次,另外一个就是过程中的条件。但是迭代就不同了,至少仅有一个出口,只有开始的值do i=1,但是没有循环的最大次数,出口只有过程中的条件。所以请各位帮忙看看SAS中如何来解决迭代的问题。
作者:
shiyiming
时间:
2009-2-10 19:59
标题:
Re: 求助
我不是学贸易的,所以不太懂你说的进出口是什么意思,哈哈,不过你不如光说你的实际需求是什么样,比你用一个大家没有共识的专业词语岂不好得多?
作者:
shiyiming
时间:
2009-2-10 20:58
标题:
Re: 求助
First of all, thank you for your good suggestion.
我的实际问题是这样子的:对数据中的缺失值进行填补,具体过程如下:
1.根据设计的缺失值填补过程将数据集中的缺失值进行填补,这个填补过程是由很多大大小小的过程组成的,形成一个大的宏。这个过程已经实现。现在的主要问题是第二步。
2.填补不是一次就ok的,是通过多次迭代,形成一个比较满意的结果。具体如下:第一次填补完成之后用新的填补值取代缺失值形成一个完整的数据集,这个新的数据集在第二次填补的时候要用得到,然后进行第二次的填补(每次的填补过程是一样的,都是第一步中的过程,只是完整数据集是不同的),又得到一个新的填补值,这时是要进行一个判断,这个判断是通过比较前后两次填补值的差的绝对值与第一次填补值的比值是否大于0.10来实现的,(1)如果小于0.10,那么第一次的填补值可以作为最终的填补值,迭代结束。(2)如果大于0.10,那么用第二次的填补值来代替第一次的填补值形成新的完整数据集,再进行第三次的填补,依此类推,直到前后两次的差值的绝对值与前一次的比小于0.10即停止迭代,并以前一次的填补值作为最终的填补值。
这个循环与一般的do i=1 to 10不同,因为事前不知道循环的次数,只能通过0.10来判断,对于不同的数据迭代的次数也是不同的。想不出这个循环该如何实现,谢谢各位!
作者:
shiyiming
时间:
2009-2-10 22:37
标题:
Re: 求助
难道你是想问传说中的do until? 或者是宏语句中的%DO %UNTIL
作者:
shiyiming
时间:
2009-2-10 22:39
标题:
Re: 求助
但是do until 好像也是不行哦,因为我想利用循环的次数i值
作者:
shiyiming
时间:
2009-2-11 07:34
标题:
Re: 求助
傻孩子啊,DO UNTIL里来一个i=i+1
作者:
shiyiming
时间:
2009-2-11 09:25
标题:
Re: 求助
我怎么在看天书啊
作者:
shiyiming
时间:
2009-2-11 10:57
标题:
Re: 求助
可能要的是 break,link 之类的语句。
作者:
shiyiming
时间:
2009-2-16 22:59
标题:
Re: 求助
谢谢各位了,我再试试吧!
欢迎光临 SAS中文论坛 (https://mysas.net/forum/)
Powered by Discuz! X3.2