根据你的想法,我写了一段,仅供参考。
/*建立数据集raw,用来生成子数据集的母数据集*/
data raw;
input id rq yymmdd10.;
cards;
1 2009-1-6
2 2009-1-6
3 2009-1-15
4 2009-1-25
5 2009-2-11
6 2009-2-11
7 2009-2-21
8 2009-2-28
9 2009-3-5
10 2009-3-15
11 2009-3-21
12 2009-5-15
13 2009-5-15
;
run;
/*建立数据集rq,用来生成筛选条件,暂且命名为判定数据集*/
data rq;
input id rq yymmdd10.;
cards;
1 2009-1-6
2 2009-1-15
3 2009-1-25
4 2009-2-11
5 2009-2-21
6 2009-2-28
7 2009-3-5
8 2009-3-15
9 2009-3-21
10 2009-5-15
;
run;
%macro creat;
data _null_;
set rq nobs=nobs;/
if _n_=nobs then call symput("nobs",nobs);/*获取判定数据集中有多少条数据*/
%do i=1 %to &nobs;
data _null_;
set rq;
if id=&i ;
call symput("rq&i",rq);/*生成每个日期的宏变量,这里是十个,即&rq1到&rq10从小到排列,你在其他地方可以调用*/
data rq&i;
set raw;
if rq=<"&rq&i";/*调用前面生成的判别时间宏变量*/
run;
%end;
run;
%mend;
%creat;
另外像你说的数据量很大的话,不太建议用这样的方式,用hash要快的多。
本文来自: 人大经济论坛 详细出处参考:b]
10# 人生海海