data smooth;
set chapt7.smooth;
by cid;
array lags(12);
lags(1)=lag(balance);
do i=2 to 12;
lags(i)=lag(lags(i-1));
end;
do j=12 to 2 by -1;
if j gt cns then lags(j)=.;
put j=;
end;
if first.cid then do
cns=0;
do i=1 to 12;lags(i)=.;
end;
end;
cns+1;
mean6=mean(of lags1-lags6);
mean12=mean(of lags1 - lags12);
drop i j;
run;
书上说first不能放在by的后面,和lag函数有关系,菜鸟不懂,求问原理!!
确实在把first放在前边的时候,运行会报错原因是lags()是还没有定义。
菜鸟还想问,代码在编译的时候生成了什么啊,cns是在第二个do循环里就用到了,但是是在最后的first里,才第一次给cns赋值的啊~~什么原理,使这段代码可以这么用呢?
菜鸟愚昧,求大神指点!!!



雷达卡




京公网安备 11010802022788号







