最近UPDATEステートメントにはまってます。
「データステップ100万回(UPDATEステートメントを使ってみる)」から興味を持ち始めたのですが色々面白いことが出来そうなので、こちらでも基礎から応用例まで紹介したいと思います。
基本構文
data 結果データセット ; update マスターデータ トランザクションデータ ; by BY変数; run; |
MERGEと似たような動作で、マスターをトランザクションデータで更新します。
異なる点は以下4点で、UPDATEステートメントを使いこなすうえで重要なルールとなります。
① BYステートメントは必須。 ② マスター側はBY値が重複するオブザベーションがあったらダメ。 ③ トランザクション側はBY値が重複していてもOK。(トランザクション側の値を上から順にマスターへ更新していく) ④ トランザクション側の値が欠損値の場合は更新しない。(MERGEだと欠損値になる) |
分かりづらいと思うのでまず以下のサンプルを見てみましょう。
*** マスターデータ作成 **********;
data DT1;
input A B;
cards; 1 1 2 1 3 . ; run; *** トランザクションデータ作成 ****; data DT2; input A B; cards; 1 . 2 20 2 30 3 20 4 20 ; run; *** トランザクションデータを使ってマスターを更新 *****; data DT3; update DT1 DT2; by A; run;
|
具体的には以下のような処理の流れになります。
上の方で説明したUPDATEステートメントのルール①~④と照らし合わせて見てみましょう。
0 件のコメント:
コメントを投稿