2019年2月14日木曜日

データセット間で同じ変数名があるかチェックする方法





たまにタイトルにあるようなチェックをかけたい事ってありますよね。
色々方法はあると思いますが、今回はPROC SORTによる解法を載せておきます。



サンプルデータ

data TEST1;
   aa=1; bb=2;
run;

data TEST2;
   Aa=1; bb=2; cc=3;
run;

data TEST3;
   bb=2; xx=4;
run;







ここで、WORKライブラリのデータセットTEST1、TEST2、TEST3に同じ変数名があるかを確認したいと思います。



PROC SORTでの解法例

%upcase(
   proc sort data=sashelp.vcolumn out=OUT1 nouniquekey sortseq=linguistic(strength=primary);
       by name;
       where libname="WORK" and memname in ("TEST1","TEST2","TEST3");
   run;
)


結果がデータセットOUT1に出力されます。
「aa」と「bb」が変数名として重複してるってことですね。



ざっくり解説

  • 変数定義情報は「SASHELP.VCOLUMN」から取得しています。
  • PROC SORTの「NOUNIQUEKEY」をうまく利用しています。
  • 「sortseq=なんちゃらかんちゃら」の部分はマニュアル分かりづらくてちゃんと調べきれてないですが、これを指定すると日本語をソートする場合だと「あ」と「ア」、「ア」と「ア」、「B」と「b」などを同じとみなすようになります。
  • 今回の場合は変数名が大文字だったり小文字だったりしても同じものとみなしたいんで指定してます。
  • プログラム青文字部分にチェック対象のライブラリ名とデータセット名を指定します。



0 件のコメント:

コメントを投稿