- data a2001;
- input id;
- cards;
- 1
- 2
- 3
- 4
- 5
- ;
- run;
- data b2002 b2003 b2004 b2005 b2006;
- input id;
- cards;
- 2
- 3
- 4
- 5
- 6
- ;
- run;
- %MACRO TEST_MACRO();
- %LET YEAR=2001;
- *比如暂定数据的起始年份为2001年,数据总共到2017年;
- %DO I=0 %TO 0;
- %LET YEAR0=%EVAL(&YEAR.+&I.);
- PROC SORT DATA=WORK.A&YEAR0.;BY ID;RUN;
- %DO J=1 %TO 5;
- %LET YEAR%EVAL(&J.)=%EVAL(&YEAR.+&I.+&J.);
- %LET T_YEAR=&&YEAR&J..;
- PROC SORT DATA=WORK.B&T_YEAR.;BY ID;RUN;
- %END;
-
- DATA RSLT_&YEAR0.;
- MERGE WORK.A&YEAR0.(IN=IN0)
- WORK.B&YEAR1.(IN=IN1)
- WORK.B&YEAR2.(IN=IN2)
- WORK.B&YEAR3.(IN=IN3)
- WORK.B&YEAR4.(IN=IN4)
- WORK.B&YEAR5.(IN=IN5)
- ;
- BY ID;
- IF IN0;
- IF IN0 AND IN1 THEN FLAG1=1;ELSE FLAG1=0;
- IF IN0 AND IN2 THEN FLAG2=1;ELSE FLAG2=0;
- IF IN0 AND IN3 THEN FLAG3=1;ELSE FLAG3=0;
- IF IN0 AND IN4 THEN FLAG4=1;ELSE FLAG4=0;
- IF IN0 AND IN5 THEN FLAG5=1;ELSE FLAG5=0;
- RUN;
- %END;
- %MEND;
- %TEST_MACRO();
楼主不要意思 前2天我没看论坛,这是我测试之后的代码 测试没问题,你试下,我追到这回答你的问题,也是没谁了