yongyitian 发表于 2013-2-17 01:38 
是不是这样
data test;
input Stkcd $ date $10. value;
谢谢你,学习了,基本思路是对的,不过lag函数直接放在if语句中会出问题,会导致每个stkcd前两个值都是缺失值,我查了下资料
http://r97846001.blog.ntu.edu.tw/2011/06/18/saslag/comment-page-1,
最后我写的代码是这样的:
data sales;
set sales;
by Stkcd date;
lag_sales=lag(G02030);
dif_sales=dif(G02030);
if first.Stkcd then do;
lag_sales=. ;
dif_sales=. ;
end;
growth=dif_sales/lag_sales;
run;
data sales;
set sales;
if growth='.' then delete;
run;
proc means data=sales;
by Stkcd;
output out=Avegrowth mean(growth)=salesgrowth;
proc print data=Avegrowth;
run;