Hash 我可以在SAS中通过多个键进行哈希合并吗
我想在SAS中使用两个键进行散列合并 名为link_id 8的查找数据集的变量名。参考日期8。; 合并数据集的变量名为link_id 8。第八次吸毒 我使用的代码如下:Hash 我可以在SAS中通过多个键进行哈希合并吗,hash,merge,sas,key,Hash,Merge,Sas,Key,我想在SAS中使用两个键进行散列合并 名为link_id 8的查找数据集的变量名。参考日期8。; 合并数据集的变量名为link_id 8。第八次吸毒 我使用的代码如下: data elig_bene_pres; length link_id ref_date 8.; call missing(link_id,ref_date): if _N_=1 then do; declare hash elig_bene(dataset:"bene.elig_bene_uid"
data elig_bene_pres;
length link_id ref_date 8.;
call missing(link_id,ref_date):
if _N_=1 then do;
declare hash elig_bene(dataset:"bene.elig_bene_uid");
elig_bene.defineKey("link_id","ref_date");
elig_bene.defineDone();
end;
set data;
if elig_bene.find(key:Link_ID,key:drug_dt)=0 then output;
run;
但这两把钥匙似乎找不到。我只是想知道我的方法是否可行
谢谢 代码没有明显的问题
要排除故障,请尝试合并排序:
PROC sort
两个数据集,然后通过两个关键变量将它们合并。这将显示哪些值看起来相似,但并不完全相同。此示例显示您有正确的方法
data elig;
input lukey1 lukey2;
datalines;
1 1
1 2
2 4
3 6
3 7
run;
data all;
do key1 = 1 to 10; do key2 = 1 to 10;
array x(5) (1:5);
output;
end; end;
run;
data all_elig;
length lukey1 lukey2 8;
call missing (lukey1,lukey2);
if _n_ = 1 then do;
declare hash elig (dataset:"elig");
elig.defineKey ('lukey1','lukey2');
elig.defineDone ();
end;
set all;
if 0 = elig.find(key:key1, key:key2);
run;
如图所示的过程不是真正的合并,因为查找哈希没有显式的数据元素。没有指定数据时,键是隐式数据
如果选择的是所有数据行,则要排除故障的第一项是
bene.elig\u bene\u uid
。它是数据的超集吗?您有两个匹配的值吗?是的,实际上结果显示了数据的所有行。请提供一些虚拟数据,我们可以用来重现您的问题,以及您试图生成的相应输出。