呵呵~多谢关心
这下应该可以了,是你要求的第二种方法
proc iml;
use ex1;
read all var{year q x} into g;
q=j(nrow(g),2,0);
do i=1 to nrow(g);
if i=1 then do;
limit=(g[,1]-g[i,1])*4+g[,2]-g[i,2];
locate=loc(limit>=-3 & limit<=0);
q[i,1]=g[locate,3][:];
q[i,2]=((g[locate,3]-g[locate,3][:])##2)[:]##0.5;
end;
else if all(g[i,1:2]=g[i-1,1:2]) then do;
q[i,1]=.;
q[i,2]=.;
end;
else do;
limit=(g[,1]-g[i,1])*4+g[,2]-g[i,2]; /*将年份的差乘以4,加上季度的差,赋值给limit*/
locate=loc(limit>=-3 & limit<=0); /*用loc函数找出limit值在[-3,0]之间的观测位置,即要求的四个季度的所有观测的位置*/
q[i,1]=g[locate,3][:];
q[i,2]=((g[locate,3]-g[locate,3][:])##2)[:]##0.5;
end;
end;
create ans from q[colname={'mean','std'}];
append from q;
quit;
data ans;
merge ex ans;
run;


雷达卡





京公网安备 11010802022788号







