我有以下数据。限制金额变量仅适用于第一条记录
如果Limit为0,则PostBal应与Balance相同,否则为Limit + Balance之和
Id date Limit Balance
101 4/1/2019 0 50
101 4/1/2019 120
101 4/2/2019 150
102 4/1/2019 100 100
102 4/1/2019 50
102 4/2/2019 25
所需结果:
Id date Limit Balance PostBal
101 4/1/2019 0 50 50
101 4/1/2019 120 120
101 4/2/2019 150 150
102 4/1/2019 100 100 200
102 4/1/2019 50 250
102 4/2/2019 25 275
我的代码:
Data want;
Set have;
By id date;
if first.date and not first.id then Limit=PostBal;
If first.date then do;
PostBal=Limit;
End;
PostBal+Balance;
Run;
如果“限制”> 0而不是“限制= 0”,则此方法工作正常。感谢您的提前帮助。
答案 0 :(得分:0)
您需要跟踪LIMIT为零的事实,以便可以使用该事实来更改PostBal的计算方式。因此,为此创建一个新变量。
data want;
set have;
by id ;
if first.id then limit_copy =limit;
retain limit_copy;
if first.id then PostBal=limit;
if limit_copy ne 0 then PostBal+Balance;
else postbal=balance;
run;