全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3832 4
2011-03-10
data test;
do  i=1 to 1000;
if i=500 then leave;
end;
run;


这段代码运行下来结果是:test数据集中有一个变量i,i有一个观测为500。
说明程序在i=500的时候离开了do循环,leave语句起作用了。


data test;
do  i=1 to 1000;
if 1=500 then do x=1;leave;end;
end;
run;
我希望当i=500的时候,让x=1,然后离开do循环。
这段代码运行的结果是:数据集test有两个变量,i和x,i有一个观测是1001,x的观测时缺省的.。

这说明程序在i=500的时候没有离开do循环,而是知道i=1000的时候才离开循环。

哪位大侠能解释下,是不是说leave只能离开离他最近的那个do语句,程序2中是离开的这句话if 1=500 then do x=1;leave;end;里面的do?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2011-3-10 16:22:28
如果需要你想要的结果,你需要在
if i=500 then do后面加一个分号。

data test;
        do i=1 to 1000;
                if i=500 then do;
                        x=1;
                        leave;
                end;
        end;
run;

不过这个问题很有意思,为什么没有分号,leave似乎就不起作用了呢……
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-3-10 17:28:57
请教了我的一个同事,他说leave, goto, continue这些能不用就尽量别用,尽可能用do while或者do until来取代。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-3-10 21:16:08
3# myc_sas 谢谢你! 很有帮助!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-3-11 07:46:53
if 1=500......
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群