在变量生成SAS中使用for循环索引

时间:2015-06-15 10:51:03

标签: for-loop sas

我想在SAS中设置一个for循环,我想创建时间依赖表。

这个想法很简单。我有多个表格,我想留下加入他们,我希望每个月都有这个操作。我在SAS编码方面没有太多的经验,所以我非常感谢你的帮助。我的想法如下:

for i in [201401:201503]
proc sql;
create table try_i ## for each month try_201401, try_201402 etc...
select t1.var1 as var1_i ##again similar to above var1_201401, var_201402 etc..
from t1 
left join table2 t2 on condition1 ## this is not dependennt so there is index is required   
...
where t1.var'i' is not missinig ## in table t1, I have a specific variable which specifies the time period ex: var201405

提前多多感谢 图兰

1 个答案:

答案 0 :(得分:1)

一个简单的宏可以做到:

%macro monthly_table( year, month);
   proc sql;
   create table as try_&year.&month. as
   select t1.var1 as var&year.&month. from t1
   left join .... on...
   where t1.var&year.&month. is not missing;
   quit;
%mend monthlytable;

%macro reporting( year,month);
  %do month =1 to &month;
      %monthly_table( &year, &month)
  end;
%mend reporting;

如果你不熟悉宏:

宏月度表:   %macro % mend用于定义宏,而& year& month将返回您在第一行的括号之间提供的值。

e.g。 %monthlyRep ( 2004, 01)将根据年份值= 2004和月值= 01运行proc sql语句。

宏报告: 循环一年中的几个月。 对于2015年,您只需在括号内指定,例如

%report( 2015, 01) = 201501