MODIFYステートメントを使用したSASデータセットの更新 [OS]ALL
[リリース] 6.07, 6.08, 6.09, 6.10, 6.12, 8.2
[キーワード] base, datastep, modify, option, key=, _iorc_, output
[質問]DATAステップのMODIFYステートメントを使用して、SASデータセットを更新しようとしましたが、KEY=データセットオプション(インデックス変数)に指定した変数の値で、マスターのデータセットに無いものがトランザクションのデータセットにあると、以下のようなエラーが発生します。どうすればよいでしょうか。 ERROR: No matching observation was found in master data set. [回答]
MODIFYステートメントでインデックスを使用して更新する場合は、基本的にトランザクションのキー変数の値はマスターに存在しているものでなければなりません。 data master(index=(a)); input a b $; cards; 1 m 2 m 3 m 4 m ; run; data transact; input a c $; cards; 1 t 2 t 3 t 5 t ; run; data master; set transact; modify master key=a; select (_iorc_); when (%sysrc(_sok)) do; /* キーがマッチする場合は更新 */ b=c; replace; end; when (%sysrc(_dsenom)) do; /* キーがアンマッチの場合は追加 */ _error_= 0; _iorc_= 0; b=c; output; end; otherwise do; /* その他の場合はメッセージを出力 */ put 'ERROR: IORC is' _iorc_; stop; end; end; run; proc print data=master; run; [参考]
|