在 SAS 中,是否可以在同一数据步骤中声明 2 个哈希表?
in SAS, is it possible to declare 2 hash tables in the same data step?
我可以这样声明 1 个哈希 table:
data DALY1;
* set lengths ;
length Germ Category1 Category2 AgeGroupDALY Gender 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 Category1 Category2 AgeGroupDALY Gender 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;
我得到:
ERROR: Undeclared data symbol stateList for hash object at line 194 column 3.
ERROR: DATA STEP Component Object failure. Aborted during the EXECUTION phase.
我想知道是否可以同时声明 2 个哈希 table(或更多,我需要 3 个)。
如果答案还没有,我做错了什么?
我在任何地方都找不到这样的例子。
谢谢!
是的,您可以在一个数据步骤中创建多个哈希表。
参考:This Forum Paper or This SESUG paper
您没有定义变量 'stateList'。
将变量 'stateList' 添加到您的 LENGTH 语句中。
我可以这样声明 1 个哈希 table:
data DALY1;
* set lengths ;
length Germ Category1 Category2 AgeGroupDALY Gender 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 Category1 Category2 AgeGroupDALY Gender 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;
我得到:
ERROR: Undeclared data symbol stateList for hash object at line 194 column 3.
ERROR: DATA STEP Component Object failure. Aborted during the EXECUTION phase.
我想知道是否可以同时声明 2 个哈希 table(或更多,我需要 3 个)。
如果答案还没有,我做错了什么?
我在任何地方都找不到这样的例子。
谢谢!
是的,您可以在一个数据步骤中创建多个哈希表。
参考:This Forum Paper or This SESUG paper
您没有定义变量 'stateList'。 将变量 'stateList' 添加到您的 LENGTH 语句中。