先读入数据,假设读入数据集命名为stockdata,变量名都是你提供的变量名。
proc sort data = stockdata;
by stkcd opndt;
run;
proc expand data = stockdata out = stock_MA30 method = none;
convert Mretwd = Mretwd_MA30 / tout = (movave 30);
convert Mretnd = Mretnd_MA30 / tout = (movave 30);
id Opndt;
by stkcd;
run;
/* 将不满30个月的置为缺失值 */
data stockreturn_MA30;
set stock_MA30;
by stkcd opndt;
retain number;
if first.opndt then do;
number = 0;
end;
number = number + 1;
if number < 30 then do;
Mretwd_MA30 = .;
Mretnd_MA30 = .;
end;
drop number;
run;
stockreturn_MA30 中含有你想要的两个移动平均。