Hello @Will_FBB I think i overlooked something and unnecessarily complicated the previous. Here is a simple one
data have;
input ID $ Month (x a b c) (:comma10.);
cards;
A 1 12,810 . . .
A 2 . 50 . .
A 3 . . 50 .
A 4 . . . 50
A 5 . . . .
A 6 . . . 2,020
A 7 . . . 2,000
A 8 . . . 29
A 9 . . . 300
A 10 . . . .
B 1 26,121 . . .
B 2 . 1,000 . .
B 3 . . . .
B 4 . . 600 2,035
B 5 . . . .
B 6 . 500 . .
B 7 . . . .
B 8 . . . 533
B 9 . . . 484
B 10 . . . .
;
data want;
do until(last.id);
set have;
by id;
array t(*) a--c;
if first.id then y=x;
else if s>. then y+(-s);
output;
call missing(s);
if n(of t(*))>0 then s=sum(of t(*));
end;
call missing(y);
drop s;
run;
Please accept my apology
... View more