我的问题是SAS中的条件累积和。我认为使用样本可以更好地解释它。我有以下数据集:
Date Value
01/01/2001 10
02/01/2001 20
03/01/2001 30
04/01/2001 15
05/01/2001 25
06/01/2001 35
07/01/2001 20
08/01/2001 45
09/01/2001 35
我想找到累计值的总和。我的条件是,如果累计金额超过70,它应该是70,下一个累计金额应该从70以上的超额值开始等等。更多的是,我的新数据应该是:
Date Value Cumulative
01/01/2001 10 10
02/01/2001 20 30
03/01/2001 30 60
04/01/2001 15 70
05/01/2001 25 30 ( 75-70=5+25=30)
06/01/2001 35 65
07/01/2001 20 70
08/01/2001 45 60 ( 85-70=15+45=60)
09/01/2001 35 95 ( because its last value)
非常感谢提前
答案 0 :(得分:1)
这是一个解决方案,虽然必然会有一个更优雅。它用if eof
分成两部分,以满足最后的观察条件。
data want;
set test end = eof;
if eof ^= 1 then do;
if cumulative = 70 then cumulative = extra;
Cumulative + value;
extra = cumulative - 70;
if extra > 0 then do;
cumulative = 70;
end;
end;
retain extra;
retain cumulative;
if eof = 1 then cumulative + value;
run;