2つのSASデータセットのうち、片方に存在するデータをもう片方から削除する方法

[OS]ALL
[リリース] 6.12, 8.1, 8.2
[キーワード] SQL, EXCEPT

[質問]

2つのSASデータセットがあります。片方のデータセットに含まれるレコード(オブザベーション)を、もう1つのSASデータセットから削除したいと思います。何かよい方法はありますか。

[回答]

SQLプロシジャのEXCEPT演算子を使用すると可能です。
下記のサンプルプログラムは、TRANSデータセットに存在するオブザベーションをMASTERデータセットから削除します。

サンプルプログラム

DATA master;
  INPUT id name $;
CARDS;
1 A
2 B
3 C
4 D
5 E
6 F
7 G
;
RUN;

DATA trans;
  INPUT id name $;
CARDS;
2 B
3 C
5 E
;
RUN;

PROC SQL;
  CREATE TABLE master AS
  SELECT * FROM master
    EXCEPT
  SELECT * FROM trans
;
QUIT;