Могу ли я сделать хеш-слияние несколькими ключами в SAS - PullRequest
0 голосов
/ 07 июня 2018

Я хотел бы объединить хэш в SAS, используя два ключа:

Имена переменных для набора данных поиска с именами link_id 8. и ref_date 8 .;Имена переменных для объединенного набора данных с именами link_id 8. и drug_date 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;

Но, похоже, эти два не найденыключи.Я просто хочу знать, выполним ли мой метод.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Этот пример показывает, что у вас правильный подход.

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_bene_uid.Случайно ли это ключи - суперсет из data?

0 голосов
/ 08 июня 2018

Нет явных проблем с кодом.

Чтобы устранить неполадки, попробуйте выполнить сортировку слиянием: PROC SORT оба набора данных, затем merge их by две ключевые переменные.Это покажет, какие значения выглядят похожими, но не совсем одинаковыми.

...