2 つの SAS データ セットがあります。1 つ目は比較的小さく、一意の日付と対応する ID が含まれています。
date dateID
1jan90 10
2jan90 15
3jan90 20
...
2 番目のデータ セットは非常に大きく、2 つの日付変数があります。
dt1 dt2
1jan90 2jan90
3jan90 1jan90
...
dt1
と の両方を一致させる必要がdt2
あるdateID
ため、出力は次のようになります。
id1 id2
10 15
20 10
ここでは効率が非常に重要です。ハッシュ オブジェクトを使用して 1 つの一致を行う方法を知っているので、1 つのデータ ステップを実行して の一致を実行しdt1
、次に別のステップをdt2
実行できますが、両方を 1 つのデータ ステップで実行したいと考えています。これはどのように行うことができますか?
これが私がちょうどのためにマッチをする方法ですdt1
:
data tbl3;
if 0 then set tbl1 tbl2;
if _n_=1 then do;
declare hash dts(dataset:'work.tbl2');
dts.DefineKey('date');
dts.DefineData('dateid');
dts.DefineDone();
end;
set tbl1;
if dts.find(key:date)=0 then output;
run;