SAS Macro Do LOOP

时间:2018-04-04 20:39:50

标签: loops sas sas-macro

我希望在几年内有一个sas宏循环,所以do循环将从2006年到2008年跳到2010年......一直到2018年,而不是从2006年到2007年。

当我执行%by = 2时,SAS无法正常工作并给出错误消息。什么是最好的解决方案?

我有以下代码:

%macro import;
    %do I = 2006 %to 2018;
        data BTI&I;
            set edited.Bti_&I;
            year=&I;
        run; 
    %end;
%mend import;
%import;

1 个答案:

答案 0 :(得分:3)

添加%by 2关键字以增加2的间隔。我还建议将起点和结束年份作为参数传递给您的函数,并给出默认值2006和2018。

%macro import(start=2006, end=2018);
    %do I = &start. %to &end. %by 2;
        data BTI&I;
            set edited.Bti_&I;
            year=&I;
        run; 
    %end;
%mend import;
%import;

用法:

  • %import();将使用默认值2006& 2018年
  • %import(start=2009, end=2018);指定您要使用的日期范围