不用宏,很简单的
data test;
input date a@;
format date yymmdd10.;
informat date yymmdd10.;
cards;
2019-06-01 6
2019-06-02 5
2019-06-03 4
2019-06-04 9
2019-06-05 8
2019-06-06 10
2019-06-07 12
2019-06-08 11
2019-06-09 17
;
run;
proc sort data=test;
by date;
run;
data result;
set test;
retain firsta seconda thirda;
retain firstdate seconddate thirddate;
format newdate yymmdd10.;
keep newdate avga;
if mod(_n_,3)=1 then do; firsta=a;firstdate=date;newdate=seconddate;end;
if mod(_n_,3)=2 then do; seconda=a;seconddate=date;newdate=thirddate;end;
if mod(_n_,3)=0 then do; thirda=a;thirddate=date;newdate=firstdate;end;
avga=(firsta+seconda+thirda)/3;
run;