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】データセットのエンコードを答えさせる問題【CONTENTS】【SAS Base Programming対策7】

今回はデータセットのエンコードを答えさせる問題について解説します。SAS Base Programming試験を受けたときに出題されました。 data data1; Id1=1111; Id2=111 …

【SAS】INPUTは日付表記をSAS日付に変換できる

今回はINPUT関数を使って日付表記をSAS日付に変換する方法について解説します。  /* “2022/01/04” */ data data1; a = “2022/01/04”; b = …

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

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

【SAS】SASで日付を扱う(年月日)【”d】 【YEAR()】【MONTH()】【DAY()】【MDY()】

今回は日付を用いた様々な操作について解説します。  /*”d*/ data data1; Id1 = ’03jan2022’d; run; ’03jan2022’d …

【SAS】FORMATステートメントは文字列の出力形式を変換する。

今回はFORMATステートメントについて解説します。 /* format */ data data1; Id1=111111; output; run; data data2; set data1; …