|
希望是你需要的!
*算平均值;
proc sql;
select mean(m1),mean(m2),mean(m3)
from test;
quit;
*平滑均值的计算;
data test;
set test;
format sum1 sum2 sum3 8.2;
retain sum1 sum2 sum3;
sum1+m1;
sum2+m2;
sum3+m3;
run;
data test2;
merge test(keep=sum1 sum2 sum3)
test( firstobs=4 rename=(sum1=sum1a sum2=sum2a sum3=sum3a) keep=sum1 sum2 sum3);
means1= (sum1a-sum1) /3;
means2= (sum2a-sum2) /3;
means3= (sum3a-sum3) /3;
run;
*后滞平均值;
%macro test(data=,n=,var=);
data test2;
format means sum 8.2;
set &data;
means=0;
sum=0;
%do i =1 %to %eval(&n.-1);
sum=sum+lag&i(&var);
%end;
sum=sum+&var;
if _n_ >= &n. then means=sum/&n;
else means=.;
run;
%mend;
%test(data=test,n=5,var=m3)
|