- data have;
- input time x;
- cards;
- 1 9
- 2 5
- 3 6
- 4 7
- 5 4
- 6 9
- 7 5
- 8 2
- 9 3
- 10 4
- 11 5
- 12 6
- ;
- run;
- proc sql;
- select max(x) into :max_x from have(firstobs=3);
- quit;
- %macro findmax;
- data want;
- set have;
- x_lag1=lag1(x);
- x_lag2=lag2(x);
- qian=mean(x,x_lag1);
- hou=mean(x_lag1,x_lag2);
- max=max(qian,hou);
- if _n_>2 and x_lag1=&max_x;
- keep max;
- run;
- %mend findmax;
- %findmax;