gpt4 book ai didi

sas - SAS 中的多个哈希对象

转载 作者:行者123 更新时间:2023-12-04 17:24:27 25 4
gpt4 key购买 nike

我有两个 SAS 数据集。第一个相对较小,包含唯一的日期和相应的 ID:

date   dateID
1jan90 10
2jan90 15
3jan90 20
...

第二个数据集非常大,并且有两个日期变量:
dt1     dt2
1jan90 2jan90
3jan90 1jan90
...

我需要匹配两个 dt1dt2dateID ,所以输出将是:
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;

最佳答案

考虑到哈希表的大小,格式可能会同样有效地工作......

data fmt ;
retain fmtname 'DTID' type 'N' ;
set tbl1 ;
start = date ;
label = dateid ;
run ;
proc format cntlin=fmt ; run ;

data tbl3 ;
set tbl2 ;
id1 = put(dt1,DTID.) ;
id2 = put(dt2,DTID.) ;
run ;

根据以下评论编辑版本...
data fmt ;
retain fmtname 'DTID' type 'I' ;
set tbl1 end=eof ;
start = date ;
label = dateid ;
output ;
if eof then do ;
hlo = 'O' ;
label = . ;
output ;
end ;
run ;
proc format cntlin=fmt ; run ;

data tbl3 ;
set tbl2 ;
id1 = input(dt1,DTID.) ;
id2 = input(dt2,DTID.) ;
run ;

关于sas - SAS 中的多个哈希对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12398569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com