Hash 我可以在SAS中通过多个键进行哈希合并吗

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"

我想在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");
      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
。它是数据的超集吗?

您有两个匹配的值吗?是的,实际上结果显示了数据的所有行。请提供一些虚拟数据,我们可以用来重现您的问题,以及您试图生成的相应输出。