如何在SAS中创建内循环?

时间:2017-07-10 19:23:53

标签: loops macros sas

我正在创建名为“Taxes& i。”的多个数据集(& i根据计数器I记录每个新数据集。)然后我将最后的所有表附加到表“want”。当我完成后通过第一个宏循环,我想通过另一个更改日期的循环。所以行

“2016年2月14日之间的日期:0:0:0'dt和'16Feb2016:0:0:0'dt);

看起来像

日期'date1'和'date2';

我不知道如何创建该循环,因此它会回到第一个循环中。然后该循环结束并进入第二个循环更改日期并返回到第一个循环结束...进入第二个循环。 此外,可能有一种方法可以使这个不那么笨重,以及如何在第一个循环完成执行时可能日期可以自动增加一天而不会声明它们。那也行。我只是不确定哪种是最好的和可能的。

%macro loop(list1, list2);

  %let n=%sysfunc(countw(&list1, %str('')));
  %do i=1 %to &n; 
    %let O_list1 = %scan(&list1, &i, %str('');
    %let O_list2 = %scan(&list2, &i, %str('');

/* another macro here called date_loop(date1, date2); */ 

proc sql; 
    create table taxes&i;
    select t1.tax_info
    FROM work.taxes&1 as t1
    WHERE (t1.O_LIST1 = &O_List2) AND
          (DATE BETWEEN '14Feb2016:0:0:0'dt AND '16Feb2016:0:0:0'dt);

%end;
%mend; 

run;

%list('1' '2', '3' '4') /*( this is "O_List1", "O_List2") */

data want;
   set abc.taxes: ;
run;

感谢您的帮助!

0 个答案:

没有答案