以下に、似てるようで似てない2つのデータセットがあります。
data DT1; length A $20. B C 8.; A="xxx"; B=1; C=2; run;
data DT2; length A C $10. D 8.; A="yyy"; C="zzz"; D=3; run;
|
この2つの変数定義を比較したい場合、以下の例のようにCOMPAREプロシジャを使うと楽です。
注意:
COMPAREプロシジャには変数の順番を比較する機能はないようです (例えば片方のデータセットでは変数A, B, C の順、もう片方では変数A, C, B の順で定義されてても、定義不一致として検出してくれません)
proc compare base=DT1(obs=0) compare=DT2(obs=0) listvar; run ; |
解説
- listvar を指定すると、一方にしかない変数名をリストアップしてくれます。
- それと、今回比較するのは変数定義だけで、変数値の比較結果は必要ありません。なので、(obs=0) をつけてオブザベーションを読み込まないようにします。
- ログに「同等なオブザベーションが見つかりません。」みたいなWARNINGが出てしまうけど、オブザベーションを読み込んでないから出るメッセージです。
もし厳密にWARNINGを出したくない場合は、以下のようにかけばok
proc compare base=DT1 compare=DT2 listvar novalues ; run ; |
novaluesで変数値の比較結果を出力しないようにします。
(といっても裏では変数値の比較をしてるので、重たいデータセットだと実行がモタつくかも)
0 件のコメント:
コメントを投稿