我是SAS的新手并且有一个基本问题。
我正在编写一个包含从i = 1到n的Do-To循环的宏。我希望n取决于一年是低于2005还是高于它。如果小于n = 10,否则n = 11。
年度变量已经包含在宏调用中,所以我觉得这应该很容易,但我很难挣扎。
例如,像这样的代码是理想的:
%do i= 1 %to (if &year. < 2005 then 10; else 11)
然而,这似乎不起作用。还有其他方法可以轻松实现吗?或者使用与上述内容类似的内容?
谢谢!非常感谢您的帮助!
答案 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;