我对 SAS 完全陌生。
我的数据库包含 2000-2011 年的数据,我的数据集列表对于每个数据集都是这样的date
:
TP_2004012 for 26JAN2004
TP_20040127 for 27JAN2004
TP_20040128 for 28JAN2004
我有一个像这样的数字日期20100510
。我想要此日期之前 50 天到 10 天之间的数据 (20100510
)。某些日期可能会在 50 到 10 天内丢失。
我的代码如下所示:
%let yyyymmdd=20090120;
%let beg=intnx('day',date,-55);
%let end=intnx('day',date,-10);
data x;
set QA.TP_&yyyymmdd QA.TP_&beg-QA.TP_&end;
但这是行不通的。
请帮助我为此提供合适的宏代码。
%let yyyymmdd=20090120;
%macro loop(yyyymmdd=, startrange=, endrange=);
%local date x ds;
%let date=%sysfunc(mdy(%substr(&yyyymmdd,5,2)
,%substr(&yyyymmdd,7,2)
,%substr(&yyyymmdd,1,4)));
data x;
set QA.TP_&yyyymmdd
/* loop through each specific dataset, checking first whether it exists.. */
%do x=&startrange %to &endrange;
%let ds=QA.TP_%sysfunc(intnx(day,&date,&x),yymmddn8.);
%if %sysfunc(exist( &ds )) %then %do;
&ds
%end;
%end;
;
run;
%mend;
%loop(yyyymmdd=&yyyymmdd, startrange=-55, endrange=-10);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)