Do To Loop中的上限条件

时间:2016-07-22 15:30:37

标签: loops sas

我是SAS的新手并且有一个基本问题。

我正在编写一个包含从i = 1到n的Do-To循环的宏。我希望n取决于一年是低于2005还是高于它。如果小于n = 10,否则n = 11。

年度变量已经包含在宏调用中,所以我觉得这应该很容易,但我很难挣扎。

例如,像这样的代码是理想的:

%do i= 1 %to (if &year. < 2005 then 10; else 11)
然而,这似乎不起作用。还有其他方法可以轻松实现吗?或者使用与上述内容类似的内容?

谢谢!非常感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

对于此问题,您可以利用SAS将逻辑表达式转换为0/1结果的事实。

%do i= 1 %to %eval(10 + (&year >= 2005)) ;

对于更一般的条件,只需为上限创建另一个变量,并使用%IF /%THEN逻辑来设置它。

%if &year < 2005 %then %let upper=10;
%else %let upper=11;
%do i= 1 %to &upper;