数据集(data)概貌:
代码(id) 日期(Tradate) 成交量(Volume) 换手率(Rate)
000001 2011-01-01 1000 1
000001 2011-01-02 200 0.5
.
.
600000 2011-01-01 500 0.1
600000 2011-01-02 3000 0.3
data test;
set data;
if id='000001' then output;
run;
proc sort data=test;
run;
%macro test3;
data test1;
set test;
by id tradate;
array Tavg(30);
array Hrate(30);
Tavg1=Volume;
Hrate1=Rate;
%do i=2 %to 30;
Tavg(&i.)=lag(Tavg(&i.-1));
Hrate(&i.)=lag(Hrate(&i.-1));
%end;
/*求10、20、30天的成交量及换手率移动平均值*/
%do j=10 %to 30 %by 10;
Avg_T&j.=round(mean(of Tavg1-Tavg&j.),1);
Avg_H&j.=round(mean(of Hrate1-Hrate&j.),0.01);
%end;
run;
%mend test3;
%test3;
-------------------------------------------------------
问题:对求单ID=‘000001’对应的移动平均值会求,但不会对ID等于多值时进行批量处理(即,根据ID进行分组球Volume及Rate的移动平均值),请各位大虾指导,谢谢!