2018年4月9日月曜日

putlogでlogに任意の値を出力する話

putlogをご存知でしょうか.logに任意の文字列を出力するステートメントです.

これを使ってデータの中のイレギュラーデータを(ある程度)見つけようと言う試みです.
ためしに下のデータセットがあるとして,変数aには欠測は本来入らないと仮定してください.
その変数aに欠測が入ってるかどうかと,欠測の時のほかの変数の値をlogに出力するのが以下のプログラムです.
私は最近知っていたく感動したのですが,普通にご存知の方が多いのでしょうかね...?

putlogで指定した変数の値が出力できるので,それを利用した形になります.
自分で指定した条件に該当するレコードがなかった場合,logには何も出てきません.

"E" "RROR"とputlogに指定しているのは,ログには"ERROR"と出したいが,
ログに出す条件のレコードが何もないときはERRORとログに残したくないためです.
涙ぐましいですね.この小細工が.

/*---------- ここからプログラム ----------*/

data hoge ;
 a = 1 ; b = 1 ; c = 6 ; output ;
 a = 1 ; b = 2 ; c = 5 ; output ;
 a = . ; b = 3 ; c = 4 ; output ;
 a = 1 ; b = 4 ; c = 3 ; output ;
 a = . ; b = 5 ; c = 2 ; output ;
 a = 1 ; b = 6 ; c = 1 ; output ;
run ;

data _null_ ;
  set hoge ;

 /* -- 想定の値以外(今回は欠測)があるときにlogに出力 -- */
  if a = . then do ;
    putlog "E" "RROR_A" ;
    putlog b = c = ;
  end ;

run ;


0 件のコメント:

コメントを投稿