转自 http://bbs.pinggu.org/forum.php?mod=viewthread&tid=930483&page=1
data raw;
input n a;
datalines;
1 0.1
2 0.2
3 0.3
4 0.4
5 0.5
6 0.6
7 0.7
8 0.8
9 0.9
10 1
11 1.1
12 1.2
13 1.3
14 1.4
15 1.5
;
/*1*/
data avg1;
retain sum_aa sum_aaa sum_aaaa;
set raw;
sum_aa=sum(sum_aa,a,-lag5(a));
aa=sum_aa/5;
sum_aaa=sum(sum_aaa,aa,-lag5(aa));
aaa=sum_aaa/5;
sum_aaaa=sum(sum_aaaa,aaa,-lag5(aaa));
aaaa=sum_aaaa/5;
select;
when(_n_ lt 5) call missing(aa,aaa,aaaa);
when(_n_ lt 9) call missing(aaa,aaaa);
when(_n_ lt 13) call missing(aaaa);
otherwise;
end;
drop sum_:;
run;
/*2*/
proc expand data=raw out=avg2 method=none;
id n;
convert a=aa / transformin=(movave 5);
run;
proc expand data=avg2 out=avg2 method=none;
id n;
convert aa=aaa / transformin=(movave 5);
run;
proc expand data=avg2 out=avg2 method=none;
id n;
convert aaa=aaaa / transformin=(movave 5);
run;
data avg2;
length n a aa aaa aaaa 8.;
set avg2;
select;
when(_n_ lt 5) call missing(aa,aaa,aaaa);
when(_n_ lt 9) call missing(aaa,aaaa);
when(_n_ lt 13) call missing(aaaa);
otherwise;
end;
run;