SAS_Conditional累积和

时间:2017-01-11 20:50:30

标签: sas

我的问题是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)

非常感谢提前

1 个答案:

答案 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;