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】SUBSTR関数は文字列から指定した文字数分切り取る。その2 再帰的使用

今回はSUBSTR関数の再帰的使用について解説していきます。 /* 再帰的 */ data data1; id1=”123456789″; output; run; data data2; set d …

【SAS】足し算。その3(SUM関数を用いた計算)【of】

今回はSUM関数を用いた足し算で、ofを使った計算について解説します。  (前回はSUM関数を用いた足し算について解説しました。⇒【SAS】足し算。その2(SUM関数を用いた計算) | ビジ …

【SAS】プロパティ表示を使う方法

今回はプロパティ表示について触れていきます。 /* data1_1 */ data data1; id1=”1111″; id2=”1111″; id3=”1111″; output; id1=”22 …

【SAS】【SQL】SQLにおける複数テーブルの結合 その1【UNION ALL】【Snowflake】

今回は複数テーブルの結合について解説します。 /* 複数テーブルの結合_1 */ data data1; Id1=1111; Id2=1111; Id3=1111; output; Id1=2222; …

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

今回はSORTプロシージャの降順について解説します。(前回:【SAS】SORTプロシージャはBYで指定した変数で並べ替える その1 昇順 | ビジネスイッチ (how-to-business.com) …