2017-12-01 5 views
-1

I eine Nachschlagetabelle aufweisen, die wie folgt aussieht (Name: LOOKUP_TABLE):sas Hash-Tabelle mit mehreren Schlüsselwertpaare

Obs Member_id plan_id Plan_desc  group_id Group_name 
1 164-234  XYZ  HMO_Salaried G123  Umbrellas, Inc. 
2 297-123  ABC  PPO_Hourly  G123  Umbrellas, Inc. 
3 344-123  JKL  HMO_Executive G456  Toy Company 
4 395-123  XYZ  HMO_Salaried G123  Umbrellas, Inc. 
5 495-987  ABC  PPO_Hourly  G456  Toy Company 
6 562-987  ABC  PPO_Hourly  G123  Umbrellas, Inc. 
7 697-123  XYZ  HMO_Salaried G456  Toy Company 

Ich habe eine andere Tabelle mit den folgenden Daten (Name: MAIN_TABLE):

Obs Member_id zip  income svc_dt  dx plan_id group_id Obs old_id new_id 
1 164-234 04021  $45,000 2005/01/01 250 XYZ  G123  1 164-234 N164-234 
2 297-123 22003-1234 $56,999 2005/02/03 4952 ABC  G123  2 297-123 N297-123 
3 344-123 45459-0306 $72,999 2005/03/15 78910 JKL  G456  3 344-123 C344-123 
4 395-123 03755  $75,000 2005/04/14 250 XYZ  G123  4 N164-234 M164-234 
5 495-987 94305  $96,000 2005/08/19 12345 ABC  G456  5 N297-123 B297-123 
6 562-987 78277-8310 $32,999 2005/09/13 250 ABC  G123  6 M164-234 P164-234 
7 697-123 88044-3760 $47,999 2005/11/01 4952 XYZ  G456  7 P164-234 A164-234 

My SAS-Daten Schritt ist wie folgt:

data MAIN_TABLE_1. 
set MAIN_TABLE; 
declare hash pd_lookup(dataset:"&LOOKUP_TABLE."); 
      rc_pd_definekey = pd_lookup.definekey 
       (
        'plan_id', 
        'group_id' 
       ); 
      rc_pd_definedata = pd_lookup.definedata 
       (
        'Plan_desc', 
        'Group_name' 
       ); 
      rc_pd_definedone = pd_lookup.definedone(); 
      call missing (
       Plan_desc, 
       Group_name 
      ); 
      put "rc_pd_definekey is " rc_pd_definekey; 
      put "rc_pd_definedata is " rc_pd_definedata; 
      put "rc_pd_definedone is " rc_pd_definedone; 
      drop rc_pd_definekey rc_pd_definedata rc_pd_definedone; 
      rc_pd_lookup = pd_lookup.find(); 

      run 

Meine Frage ist, zu verstehen, was hinter den Kulissen geschieht in Diese Suche wird hauptsächlich in Bezug auf die Schlüsselwertpaare durchgeführt. , d.h. werden individuelle Schlüsselwertpaare erzeugt. "Plan_id" -> "Plan_desc"

: Wie das Beispiel der Schlüsselwertepaare werden

sein "plan_id" -> "Name_der_Gruppe"

: "group_id" -> „Plan_desc "

:‚group_id‘->‚Name_der_Gruppe‘

Oder ist es, dass die Schlüssel verkettet sind, zusammen und so sind die Werte, und wir machen dann Paare. Wie in, so etwas wie diese

: "plan_id" + "group_id" -> "Plan_desc" + "Name_der_Gruppe"

Ich stelle diese Frage, wie ich die gleiche Code-Logik in R konvertieren, und wenn I falsch, dann wird der gesamte Code R wird falsch sein

+0

Ihr Datenschrittcode funktioniert nicht, wie derzeit geschrieben - er enthält Verweise auf zwei weitere Hash-Objekte 'lgd_lookup' und' ead_lookup', die nicht deklariert sind. – user667489

+0

Danke, dass du das raus gesagt hast und sorry. Es war ein Tippfehler. Ich hätte vorsichtiger sein sollen, da ich ein Original-Skript replizierte, das in meiner Organisation verwendet wurde, und irgendwie sind diese zwei Zeilen irrtümlich eingedrungen. Ich habe diese Zeilen jetzt bearbeitet. Mein Hauptziel ist es, den Prozess zu verstehen, um die Logik in R zu replizieren. – Gompu

+0

Ich schäme mich schamlos, den Downvote zu entfernen, da er meine Fähigkeiten einschränkt, Fragen in diesem Forum zu stellen. Lol – Gompu

Antwort

1

Jede Kombination aus plan_idgroup_id und verwendet, um einen eindeutigen Eintrag aus der Hash-Tabelle abzurufen beide Werte von plan_desc und group_name enthält.

Derzeit gibt es jedoch doppelte Zeilen mit derselben Kombination dieser IDs in der Nachschlagetabelle, die zu Fehlern oder unerwartetem Verhalten führen können - z. obs 1 und 4. Sie sollten eine deduplizierte Kopie der Nachschlagetabelle erstellen und diese zum Deklarieren des Hash-Objekts verwenden.

+0

Also bedeutet das, dass es Kombinationen von 'plan_id' und' group_id' geben wird, aber keine Kombinationen von 'plan_desc' und' group_desc'? – Gompu

+0

Für jede eindeutige Kombination von IDs im Hash gibt es nur einen Satz von Suchwerten, es sei denn, Sie verwenden [einige sehr spezifische Hash-Techniken] (http://support.sas.com/resources/papers/proceedings16/10200- 2016.pdf). – user667489