我想在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
提前多多感谢 图兰
答案 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