我正在尝试获取变量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;
答案 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