我有两个 SAS 数据集。第一个相对较小,包含唯一的日期和相应的 ID:
date dateID
1jan90 10
2jan90 15
3jan90 20
...
第二个数据集非常大,有两个日期变量:
dt1 dt2
1jan90 2jan90
3jan90 1jan90
...
我需要同时匹配dt1
和dt2
,dateID
所以输出将是:
id1 id2
10 15
20 10
效率在这里非常重要。我知道如何使用哈希对象进行一次匹配,因此我可以执行一个数据步骤来进行匹配,dt1
然后再执行另一步骤来匹配dt2
,但我想在一个数据步骤中同时执行这两个步骤。如何才能做到这一点?
这是我将如何进行比赛的方式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;