2017-05-04 3 views
0

私は、翌営業日に支払われる日付と金額について、次のデータセット(items)を持っています。SASの2つの異なる日付の列のインスタンス数を比較してください

次の営業日に各IDのために支払った金額は、そのrate>5

マイタスクがrate > 5は、翌営業日に支払われた金額と一致しているインスタンスの数を比較することですされたIDSのための$ 10例えば

(これは標準code 121を有するであろう)、4/14/2017' - The amount $ 40(4 * 10)にrate > 5と4つのインスタンスis paid on 4/17/2017`

Date  id rate code batch 
4/14/2017 1 12 100  A1 
4/14/2017 1 2 101  A1 
4/14/2017 1 13 101  A1 
4/14/2017 1 10 100  A1 
4/14/2017 1 10 100  A1 
4/17/2017 1 40 121 
4/20/2017 2 12 100  A1 
4/20/2017 2 2 101  A1 
4/20/2017 2 3 101  A1 
4/20/2017 2 10 100  A1 
4/20/2017 2 10 100  A1 
4/21/2017 2 30 121 
があります

My code

proc sql; 
    create table items2 as select 
    count(id) as id_count, 
    (case when code='121' then rate/10 else 0 end) as rate_count 
    from items 
    group by date,id; 
quit; 

これは望ましい結果が得られていないと私はここにある課題は、取引日(4/14/20174/20/2017)と翌営業日の日付(4/17/20174/21/2017)をチェックすることです。

あなたのお手伝いをお待ちしております。

答えて

0

ここではLAG機能がトリックを行います。 rate> 5の条件を使用することなく、遅れた値を使用して必要な条件を作成することができます。ここで

は解決策である: -

Data items; 
set items; 

Lag_dt=LAG(Date); 
Lag_id=LAG(id); 
Lag_rate=LAG(rate); 

if ((id=lag_id) and (code=121) and (Date>lag_dt)) then rate_count=(rate/lag_rate); 
else rate_count=0; 

Drop lag_dt lag_id lag_rate; 

run; 

・ホープ、このことができます。

関連する問題