2017-09-15 12 views
0

SASのLAG機能を使用して、SAS DIへの移行時にコードを複製しようとしましたが、SAS DIではまったく同じ機能はないようです。 現在SAS DI 4.21を使用しており、すぐに4.9まで移動することができます。SAS DI LAG1の代替品ですか?

だから私の質問は、SAS DIに次のコードを複製する別の方法がありますされています

DATA work.dm_chg_bal; 
SET tmp_bal_chg; 
FORMAT dt2 date9.; 
acct_id2 = LAG1(acct_id); 
app_suf2 = LAG1(app_suf); 
dt2 = LAG1(start_dt); 
RUN; 

乾杯、このために

答えて

0

I変換作成したユーザを使用します。あなたが変数マッピングを実行するのに十分なほど勤勉であり、メタデータにデータ系統を保持している限り、これを行うことにはまったく問題はありません。

説明はhereです。

0

私はDI Studioの変換がよくわかりません(私は通常、ユーザー書き込み変換のみを使用します)。

data work.dm_chg_bal; 
    set tmp_bal_chg; 
    output; 
    set tmp_bal_chg(rename=(acct_id=acct_id2 app_suf=app_suf2 start_dt=dt2)); 
run; 

または

data work.dm_chg_bal; 
    if _n_ > 1 then set tmp_bal_chg(rename=(acct_id=acct_id2 app_suf=app_suf2 start_dt=dt2)); 
    set tmp_bal_chg; 
run; 

ない場合、私はあなたが2を行うことができるようになるデータ変換があると確信している:

私はあなたが生成に騙すことができ、変換がありますかしら1つはID=_n_で、もう1つはID=_n_+1でコピーし、次にIDでマージします。つまり、生成:

data main; 
    set tmp_bal_chg; 
    ID = _n_ ; 
run; 

data lag; 
    set tmp_bal_chg (rename=(acct_id=acct_id2 app_suf=app_suf2 start_dt=dt2)); 
    ID = _n_ + 1; 
run; 

data work.dm_chg_bal; 
    merge main (in=a) 
     lag (keep=id acct_id2 app_suf2 dt2 in=b) 
    ; 
    by id; 
    if a; 
run;