2017-01-11 11 views
1

私の質問は、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 

私は値の累積合計を見つけたいと思います。

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) 

多く:70以上の累積合計が、それは70でなければなりませんし、次の累積合計が70を超える過大な値から始まっしなければならないというように...もっとpreciesly、私の新しいデータがあるべきならば私の条件があります事前に感謝

答えて

1

これは解決策ですが、もう少しエレガントになるはずです。最後の観測条件を満たすために、if eofで2つの部分に分割されています。

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; 
+0

もっとエレガントなものがあるかもしれませんが、私は本当にあなたが好きです。また、OPが言及しなかった条件(剰余が> 70など)を処理するので、余分な行を複数の行にプッシュする必要があります(おそらく最後の行まで)。 – vknowles

+0

ありがとうございました。 – Khalid