根据两个变量的总和创建一个变量(一个滞后)

Create a variable based on sum of two variables (one lag)

我有一个像下面这样的数据集,其中数量下降了,但调整仍然存在。对于每一行,金额应该是前一个金额和调整的总和。所以,观察5的数量是134(124+10)。

我有一个答案可以得到下一个值,但我需要某种递归来完成剩下的工作。我错过了什么?谢谢

data have;
    input amount adjust;
cards;
100 0
101 1
121 20
124 3
. 10
. 4
. 3
. 0
. 1
;
run;

data attempt;
    set have;
    x=lag1(amount);
    if amount=. then amount=adjust+x;
run;

data want;
    input amount adjust;
cards;
100 0
101 1
121 20
124 3
134 10
138 4
141 3
141 0
142 1
;
run;

编辑:

现在也在尝试类似的东西,仍然不是我想要的。

%macro doodoo;
%do i = 1 %to 5;

data have;
    set have;
/*  if _n_=i+4 then*/
    amount=lag1(amount)+adjust;
run;

%end;
%mend;
%doodoo;

无需 LAG(),而是使用 RETAIN。

data want ;
  set have ;
  retain previous ;
  if amount = . then amount=sum(previous,adjust);
  previous=amount ;
run;