SAS累积回报

时间:2015-10-03 11:49:46

标签: sas

我正在尝试获取变量x的累积乘积,给P初始值为1.使用迭代过程我应该得到比datastep WANT更简单的东西。感谢。

DATA NUM;
INFILE DATALINES DSD;
INPUT X YEAR;
DATALINES;
0.99,2006
0.975,2007
0.983,2008
0.978,2009
;
DATA WANT;
set num;
by year;
lag_x=lag(x);
lag2_x=lag(lag_x);
lag3_x=lag(lag2_x);
if first.year then P=1; 
if year=2007 then P=lag_x;
if year=2008 then P=lag_x*lag2_x;
if year=2009 then P=lag_x*lag2_x*lag3_x;
run;

1 个答案:

答案 0 :(得分:1)

使用RETAIN代替LAG。

data want2 ;
  set num ;
  retain p 1;
  put (year x p) (=);
  output;
  p=p*x;
run;

结果:

YEAR=2006 X=0.99 p=1
YEAR=2007 X=0.975 p=0.99
YEAR=2008 X=0.983 p=0.96525
YEAR=2009 X=0.978 p=0.94884075