2015-10-03 4 views
1

Я пытаюсь получить кумулятивный продукт переменной x, давая P начальное значение 1. Используя итеративную процедуру, я должен получить что-то более простое, чем datastep WANT ниже. Благодарю.Накопительное возвращение SAS

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; 
+2

'шаг данных. , , retain'. –

ответ

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 
Смежные вопросы