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】LIKE演算子は部分一致を表現できる。【WHERE】

/* if ‘%aaaa%’ */ data data1; Id1=1111; Id2=”1aaaa”; Id3=1111; output; Id1=2222; Id2=”bbbb”; Id3=222 …

【SAS】VERIFYは引数の文字を含まない最初の位置を返す

今回はVERIFYについて解説します。 /*正常形*/ data data1; Id1=”AAAA”; output; Id1=”ABAB”; output; Id1=”ABCD”; output; …

【SAS】%MACROはマクロを定義することができる。その3 マクロには引数を設定できる。【%MEND】

今回はマクロに引数を設定する方法について解説していきたいと思います。(事前に読んでおきたい記事:【SAS】%MACROはマクロを定義することができる。【%MEND】 | ビジネスイッチ (how-to …

【SAS】FREQプロシージャは頻度集計とクロス集計をする その2【LIST】【CROSSLIST】【NOROW】【NOCOL】

今回はFREQプロシージャにオプションを用いた場合について解説します。  FREQプロシージャの基本的な使い方については過去記事で解説しています。⇒【SAS】FREQプロシージャは頻度集計とクロス集計 …

【SAS】TIME関数はSAS時間値を取得する。

今回はTIME関数について解説します。 /* time_1 */ data data1; Id1 = time(); run; time()により、SAS時間値を取得する。 /* time_2 */ …