2017-01-09 24 views
0

私はこのソリューションをしばらく検索していましたが、コミュニティでSASに類似の質問は見つかりませんでした。SASの条件付き累積合計

私はSASに次の表を掲載しています。累積値はの日付で取得する必要があります。最も重要なのは、を超えると、累積値が新しい値から始まる必要があることです。

Date   Number 
01/01/2017  3 
01/01/2017  1 
01/01/2017  3 
01/01/2017  4 
01/01/2017  6 
01/01/2017  8 
02/01/2017  6 
02/01/2017  3 
02/01/2017  5 
02/01/2017  7 
03/01/2017  4 
03/01/2017  3 
    ...   ... 

私の出力表は次のようになります。もう1つの列には累積値が表示されます。

Date   Number  cumulative 
01/01/2017  3   3 
01/01/2017  1   4   
01/01/2017  3   7 
01/01/2017  4   4    <---- (starts from new) 
01/01/2017  6   10 
01/01/2017  8   8 
02/01/2017  6   6 
02/01/2017  3   9 
02/01/2017  5   5 
02/01/2017  7   7    <---- (starts from new) 
03/01/2017  4   3 
03/01/2017  3   7 
    ...   ...   ... 

誰かがこれを手助けできるでしょうか。 (未テスト)のような

おかげ

+0

あなたがしようとしているどのようなコードを示してください。 RETAINでDATAステップを使用していますか?また、2行目の最後の行の累積が3ではなく4でなければならないタイプミスのように見えます。 – Quentin

+0

あなたが望むもののより良い説明を投稿すれば、間違いなく答えが得られます。ルールをよりよく定義すると、これは間違いなく誰かが助けるパズルです。 –

答えて

1

何か:

data out; 
    set in; 
    by date; * Assumes sorted by date; 
    retain cumulative; 
    if first.date or cumulative+number > 10 then do; 
    cumulative = 0; 
    end; 
    cumulative = cumulative + number; 
run; 

が動作するはずです...