%let p=12;
data c (drop=i b1-b&p.);
set a;
n+1;
by cid;
(n指代每组的序号)
if first.cid then n=1;
array a[&p.] b1-b&p.;
a[1]=lag(balance);
do i=2 to &p.;
a[i]=lag(a[i-1]);
end;
mean6=mean(of b1-b6);
mean12=mean(of b1-b12);
run;
sunset1986 发表于 2012-2-24 11:32
%let p=12;
data c (drop=i b1-b&p.);
set a;
楼主,不好意思,上面这段代码没有办法实现分段均值,进行了调整:
%let p=12;
data e (drop=i j);
set a;
if balance ne '.';
n+1;
by cid;
/* (n指代每组的序号)*/
if first.cid then n=1;
array a[&p.] b1-b&p.;
a[1]=lag(balance);
do i=2 to &p.;
a=lag(a[i-1]);
end;
j=&p.;
do until (j=0);
if(n<=j) then a(j)=.;
j=j-1;
end;