在SAS中,是否可以在同一数据步骤中声明2个哈希表?

时间:2016-05-30 13:10:58

标签: sas hashtable datastep

我能够像这样声明1个哈希表:

data DALY1;
    * set lengths ;
    length Germ $10 Category1 $50 Category2 $50 AgeGroupDALY $10 Gender $2 value 8;

    * make link to hash table ;
    if _n_=1 then do;
        declare hash h1(dataset:'modelData');
        h1.definekey ('Germ', 'Category1', 'Category2', 'AgeGroupDALY', 'Gender') ;
        h1.definedata('Value');
        h1.definedone();
        call missing(Germ, Value, Category1, Category2);
    end;
run;

但是当我这样声明2时:

data DALY1;
    * set lengths ;
    length Germ $10 Category1 $50 Category2 $50 AgeGroupDALY $10 Gender $2 value 8;

    * make link to hash table ;
    if _n_=1 then do;
        declare hash h1(dataset:'modelData');
        h1.definekey ('Germ', 'Category1', 'Category2', 'AgeGroupDALY', 'Gender') ;
        h1.definedata('Value');
        h1.definedone();
        call missing(Germ, Value, Category1, Category2);

        declare hash h2(dataset:'states');
        h2.definekey ('Germ') ;
        h2.definedata('stateList');
        h2.definedone();

    end;
run;

我明白了:

  

错误:第194行第3列的散列对象的未声明数据符号stateList   错误:数据步骤组件对象失败。在执行阶段中止。

我想知道是否可以同时声明2个哈希表(或者更多,我需要3个)。
如果答案还没有,我做错了什么?

我无法在任何地方找到任何这样的例子。

谢谢!

1 个答案:

答案 0 :(得分:2)

是的,您可以在一个DATA STEP中创建多个哈希表。

请参阅:This Forum PaperThis SESUG paper

您没有定义变量' stateList'。 添加变量' stateList'你的LENGTH声明。