COMPARE SAS

【SAS】COMPAREはデータセットの比較に便利

投稿日:2021年9月25日 更新日:

今回はCOMPAREについて解説します。


/* 正常形 */
data data1;
  id="A"; chiku="SHINJUKU";
    output;
  id="B"; chiku="ICHIGAYA";
    output;
  id="C"; chiku="SHIBUYA";
    output;
run;

data data2;
  id="A"; chiku="SHINJUKU";
    output;
  id="B"; chiku="ICHIGAYA";
    output;
  id="C"; chiku="SHIBUYA";
    output;
run;

proc sort data=data1; by id; run;

proc sort data=data2; by id; run;

proc compare base=data1 compare=data2; run;
  • データセット2つを比較。
  • 同じ位置にあるオブザベーション同士を比較。
  • 同じ位置にある変数名同士を比較。
  • 出力データではなく、結果タブに表示。
  • 比較結果は完全一致。

/* data2 1レコード多い */
data data1;
  id="A"; chiku="SHINJUKU";
    output;
  id="B"; chiku="ICHIGAYA";
    output;
  id="C"; chiku="SHIBUYA";
    output;
run;

data data2;
  id="A"; chiku="SHINJUKU";
    output;
  id="B"; chiku="ICHIGAYA";
    output;
  id="C"; chiku="SHIBUYA";
    output;
  id="D"; chiku="MINATO";
    output;
run;

proc sort data=data1 out=data1; by id; run;

proc sort data=data2 out=data2; by id; run;

proc compare base=data1 compare=data2; run;

  • データセット2つを比較。
  • 同じ位置にあるオブザベーション同士を比較。
  • 同じ位置にある変数名同士を比較。
  • 出力データではなく、結果タブに表示。
  • 比較先の方が多くても完全一致。

/* id chiku違い */
data data1;
  id="A"; chiku="SHINJUKU";
    output;
  id="B"; chiku="ICHIGAYA";
    output;
  id="C"; chiku="SHIBUYA";
    output;
run;

data data2;
  id="A"; chiku="SHINJUKU";
    output;
  id="B"; chiku="ICHIGAYA";
    output;
  id="D"; chiku="MINATO";
    output;
run;

proc sort data=data1; by id; run;

proc sort data=data2; by id; run;

proc compare base=data1 compare=data2; run;

  • データセット2つを比較。
  • 同じ位置にあるオブザベーション同士を比較。
  • 同じ位置にある変数名同士を比較。
  • 出力データではなく、結果タブに表示。
  • 2か所で差分がある。

/* chiku違い */
data data1;
  id="A"; chiku="SHINJUKU";
    output;
  id="B"; chiku="ICHIGAYA";
    output;
  id="C"; chiku="SHIBUYA";
    output;
run;

data data2;
  id="A"; chiku="SHINJUKU";
    output;
  id="B"; chiku="ICHIGAYA";
    output;
  id="C"; chiku="MINATO";
    output;
run;

proc sort data=data1; by id; run;

proc sort data=data2; by id; run;

proc compare base=data1 compare=data2; run;

  • データセット2つを比較。
  • 同じ位置にあるオブザベーション同士を比較。
  • 同じ位置にある変数名同士を比較。
  • 出力データではなく、結果タブに表示。
  • 1か所で差分がある。

/* id2 chiku2 */
data data1;
  id="A"; chiku="SHINJUKU";
    output;
  id="B"; chiku="ICHIGAYA";
    output;
  id="C"; chiku="SHIBUYA";
    output;
run;

data data2;
  id2="A"; chiku2="SHINJUKU";
    output;
  id2="B"; chiku2="ICHIGAYA";
    output;
  id2="C"; chiku2="SHIBUYA";
    output;
run;

proc sort data=data1; by id; run;

proc sort data=data2; by id2; run;

proc compare base=data1 compare=data2; run;

  • データセット2つを比較。
  • 同じ位置にあるオブザベーション同士を比較。
  • 同じ位置にある変数名同士を比較。
  • 出力データではなく、結果タブに表示。
  • 同じ変数名が無い場合は比較されない。

/* chiku2 */
data data1;
  id="A"; chiku="SHINJUKU";
    output;
  id="B"; chiku="ICHIGAYA";
    output;
  id="C"; chiku="SHIBUYA";
    output;
run;

data data2;
  id="A"; chiku2="SHINJUKU";
    output;
  id="B"; chiku2="ICHIGAYA";
    output;
  id="C"; chiku2="SHIBUYA";
    output;
run;

proc sort data=data1; by id; run;

proc sort data=data2; by id; run;

proc compare base=data1 compare=data2; run;

  • データセット2つを比較。
  • 同じ位置にあるオブザベーション同士を比較。
  • 同じ位置にある変数名同士を比較。
  • 出力データではなく、結果タブに表示。
  • idのみ比較される。

/* initial1 */
data data1;
  id="A"; chiku="SHINJUKU";
    output;
  id="B"; chiku="ICHIGAYA";
    output;
  id="C"; chiku="SHIBUYA";
    output;
run;

data data2;
  id="A"; chiku="SHINJUKU"; initial="S";
    output;
  id="B"; chiku="ICHIGAYA"; initial="I";
    output;
  id="C"; chiku="SHIBUYA"; initial="S";
    output;
run;

proc sort data=data1; by id; run;

proc sort data=data2; by id; run;

proc compare base=data1 compare=data2; run;

  • データセット2つを比較。
  • 同じ位置にあるオブザベーション同士を比較。
  • 同じ位置にある変数名同士を比較。
  • 出力データではなく、結果タブに表示。
  • id chikuのみ比較される。

/* initial2 */
data data1;
  id="A"; chiku="SHINJUKU"; initial="S";
    output;
  id="B"; chiku="ICHIGAYA"; initial="I";
    output;
  id="C"; chiku="SHIBUYA"; initial="S";
    output;
run;

data data2;
  id="A"; chiku="SHINJUKU";
    output;
  id="B"; chiku="ICHIGAYA";
    output;
  id="C"; chiku="SHIBUYA";
    output;
run;

proc sort data=data1; by id; run;

proc sort data=data2; by id; run;

proc compare base=data1 compare=data2; run;

  • データセット2つを比較。
  • 同じ位置にあるオブザベーション同士を比較。
  • 同じ位置にある変数名同士を比較。
  • 出力データではなく、結果タブに表示。
  • id chikuのみ比較される。

-COMPARE, SAS

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

【SAS】計算で求められた変数に対するIFとWHEREの振舞いの違い【SAS Base Programming対策1】

/* where id3 */ data data1; id1=1111; id2=1111; id3=1111; output; id1=2222; id2=2222; id3=2222; outp …

【SAS】”nは本来使用できない文字を使用可能にする。

今回は”nについて解説します。(参考:Solved: what the ”  ‘n ” means? – SAS Support Commu …

【SAS】SASで良く使うテクニック。その8 「=」~修正前後のプログラムを比較したい時~【Excel】【VBA】

今回はSASで良く使うテクニックということで、修正前後のプログラムを比較したい時は、「=」が役に立つ理由を解説していきます。(このテクニックはコーディングなら、SASに限らず、VBAでも他のどの言語で …

【SAS】SORTプロシージャはBYで指定した変数で並べ替える その1 昇順

今回はSORTプロシージャについて解説します。 /*sort1*/ data data1; id1=”1111″; id2=”1111″; output; id1=”1111″; id2=”2222″ …

【SAS】SASUSERライブラリの性質について解説

今回はSASUSERライブラリについて解説します。(対比参考:【SAS】WORKライブラリの性質について解説 | ビジネスイッチ (how-to-business.com)) libnameを使わなく …