今回は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のみ比較される。