SASデータセットの変数定義書を、以下のような感じでExcelで作ってたとする。
準備: まずEXCELのDB定義書を読み込む 読み込むプログラムは割愛。 (Excelを読み込む方法はなんでも良いのですが、文字切れやデータの欠落などが起きやすく、確実に読み込める方法がないので要注意) 仮にExcelファイルを読み込んで、以下SASデータセットDEFINEを作成したとします。 データセットDEFINE
*** チェック①:変数名がおかしい ; data CHECK1; set DEFINE; CHECK = NVALID(F3, "V7"); if CHECK=0 then put "WARNING: 変数名がおかしいです No." F1 F2 F3 ; run; ログ WARNING: 変数名がおかしいです No.2 DEMO 1BIRTH
WARNING: 変数名がおかしいです No.7 AE AETERM
*** チェック②:データセット内で変数名が重複してる(SAS9.3以上でのみ動作) ; proc sort data=DEFINE out=CHECK2 nouniquekey; by F2 F3; run; data _NULL_ ; set CHECK2; put "WARNING: 変数名が重複しています No." F1 F2 F3; run; ログ WARNING: 変数名が重複しています No.3 DEMO AGE
WARNING: 変数名が重複しています No.4 DEMO AGE
|
チェック①
NVALID関数は、指定した文字がSAS変数名として有効かどうか検証をしてくれる関数です (こちら参照)
今回の結果で最初のWARNINGは変数名が「1BIRTH」となってて、変数名の先頭は数値を入れちゃダメというルールを破ってます。
2つ目のWARNINGは変数名が「AETERM」で、よく見ると先頭が全角の「A」です。
変数名に全角はダメというルールだけど、たまにやっちゃうミスなんですよね。
チェック②
SORTプロシジャのNOUNIQUEKEYはSAS9.3から追加された機能で、BY値が重複しているレコードを抽出してくれる (こちらを参照)
もっと細かくチェックするプログラムを組むことが出来るかと思いますが、、
長くなりそうなので今回はNVALID関数の紹介も出来たことだし、とりあえずここまでとしたいと思います。
0 件のコメント:
コメントを投稿