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 ;


2018年4月4日水曜日

ルール間違ってた

「pandemic」というボードゲームにリベンジしてきました.
致命的なルールの勘違いをしていたことに気づいてしまいました.
4戦全敗した後でですが...
規則の確認を雰囲気でやってはいけない好例です.

このゲーム,ワクチンを作って病原菌を根絶(盤上から赤青黒黄の四色の駒を完全に取り除くこと)したら勝ちだと思っていたのですが,ワクチンを4種作った段階で勝ちなのですね.そら勝てないね.

ワクチンは一枚目の画像の版下部にある,なんか四角い四色の駒ですね.
一枚目の画像は赤のワクチン駒を獲得する前に時間切れで負けです.















2枚目は一応勝ちの状態です.盤下部に赤青黄黒の四角いワクチン駒を獲得できています.
しかしこれは参考程度です...手放しで喜べない勝ちなのです...
本来ランダムに決まるプレイヤの役職を,事前に選んでプレイしましたからね...
普通に勝利は次回に持ち越しですね...