2017-07-02 51 views
-1

在下面的程序中,完成声明以便程序在距离达到250英里或使用10加仑燃料时停止生成观测值。sas做,直到距离达到250英里时做

Data work.go259; 
    set perm.cars; 
    do gallons = 1 to 10 .....; 
    Distance= gallons*mpg; 
    output; 
    end; 
run; 

正确答案是“做加仑= 1〜10时(距离< 250)” 但我想知道为什么“做加仑= 1到10,直到(距离= 250)是不正确的?我以为当距离= 250时,循环将停止,因此当距离达到250时,程序将停止产生观测数据。

+2

当你测试它时发生了什么?结果如何不同? – Reeza

+0

这听起来像是一本教科书,所以也许他们只是写下了最常见的做法。 – Seba

回答

0

据了解,您希望有条件地打破循环。两种简单的方法是离开和转到^^)这里有两个例子可以做到这一点,命令Continue也是,但还没有测试过。

Data test_goto; 
    do gallons = 1 to 10; 
    Distance= gallons*75; 
    output; 
     if distance >=250 then goto hop_Out; 
    end; 
    hop_Out: 
run; 

Data test_leave; 
    do gallons = 1 to 10; 
    Distance= gallons*75; 
    output; 
     if distance >=250 then leave; 
    end; 
run;