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文はデータ読み込み時にフィルターをする。

今回は、データ入力に着目して、IF文とWHERE文の違いを解説します。 /* if */ data data1; Id1=1111; Char1=”AAAA”; output; Id1=2222; C …

【SAS】ARRAYステートメントは配列を設定することができる。その2

今回はarrayステートメント(その2)について解説します。 以前、過去記事でarrayステートメントについて解説していました。⇒【SAS】ARRAYステートメントは配列を設定することができる。 | …

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

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

【SAS】TRANSTRN関数は指定した文字を別の文字に変換する。

/* a */ data data1; Id1=”abcd”; Id2=”ABCD”; output; Id1=”abcd”; Id2=”ABCD”; output; Id1=”abcd”; Id2= …

【SAS】SQLプロシージャはSQLを実行できる。

今回はSQLプロシージャについて解説します。 /* sql_1 */ data data1; Id1=1111; Id2=1111; Id3=1111; output; Id1=2222; Id2=2 …