具有多个键值对的sas哈希表

时间:2017-12-01 00:00:52

标签: sas hashtable

我有一个看起来像这样的查找表(名称:LOOKUP_TABLE):

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

我有另一个包含以下数据的表(名称: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

我的SAS数据步骤如下:

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

我的问题是要了解此查找中幕后发生的事情,主要是关于生成的键值对。 即,是否生成了各个键值对。 同样,键值对的例子将是

:“plan_id” - > “Plan_desc”

:“plan_id” - > “GROUP_NAME”

:“group_id” - > “Plan_desc”

:“group_id” - > “GROUP_NAME”

或者是键连接在一起,值也是如此,然后我们成对。 就像在这样的事情

:“plan_id”+“group_id” - > “Plan_desc”+“Group_name”

我问这个问题,因为我必须将相同的代码逻辑转换为R,如果我误解了,那么整个R代码将是错误的

1 个答案:

答案 0 :(得分:1)

group_idplan_desc的每个组合用于从哈希表中检索包含group_namepublic void OpenEyesForVisualTesting(string testName) { this.seleniumDriver.Driver = this.eyes.Open(this.seleniumDriver.Driver, "Zinc", testName); } public void CheckScreenForVisualTesting() { this.eyes.Check("Zinc", Applitools.Selenium.Target.Window().Fully()); } public void CloseEyes() { this.eyes.close(); } 值的唯一条目。

但是,目前在查找表中存在具有相同组合的重复行,这可能导致错误或意外行为 - 例如您应该创建查找表的重复数据删除副本,并使用它来声明哈希对象。