你好,我正在尝试使用do直到直到解决迭代问题,但是我没有得到任何结果。另外,我现在正在独自使用书籍,文档和视频学习SAS,因此我是这种语言的新手。我的问题是:
汽车每加仑行驶20英里。编写程序,以便当距离达到250英里或已使用10加仑燃料时,程序停止生成观测值 提示英里=加仑*英里/加仑
我使用了以下代码:
data mileage;
mpg = 20;
do until (miles le 250);
miles +1;
do until (gallon le 10);
gallon + 1;
miles = gallon * mpg;
end;
end;
output;
run;
请告诉我我在做什么错? 非常感谢您的时间和关注!
答案 0 :(得分:4)
因为您一直等到DO循环完成后才能写出所有观测值。如果要编写多个观察值,则应将output
语句移至do循环内。
另外,您的程序永远不会初始化gallon
,因此mpg
将始终丢失,并且少于250,这意味着您的外部DO循环将仅执行一次。
由于10 * 20小于250,因此无需编写程序就可以回答您写的问题。假设您还想更改mpg
值,那么也许这是您想要的?
data mileage;
do mpg = 20 by 1 until (miles ge 250);
do gallon=1 to 10 until (miles ge 250);
miles = gallon * mpg;
output;
end;
end;
run;
将迭代循环与UNTIL条件结合起来的能力是数据步骤DO循环的许多不错的功能之一。