使用数据集变量引用数组

时间:2018-12-04 12:52:17

标签: sas

是否可以使用数据集列(字符变量) 在数据步骤中引用与“字符名称”相同名称的数组 在数据步骤的列中。

一个例子:

data somedataset; 
  input id $ number; 
  DATALINES; 
dk33 50
dk34 100
;
run;

data test;
set somedataset;
ARRAY dk33{3} x1-x3 (10,2,3) ;
ARRAY dk34{3} y1-y3 (4,2,6)
res = id[1] + id[2] + id[3] + number  #what i want to do#
run;

如您所见,我想使用“ id”列来引用我在数据步骤中声明的数组。显然id是字符,所以它不能引用数组。但是,对此有什么解决方案吗?请帮忙...

1 个答案:

答案 0 :(得分:1)

不。您可以将您的字符变量转换为二维数组的索引。

如果您的姓名将具有连续的数字后缀(如您的示例中所示),只需将后缀转换为数字即可用作索引。

i=input(substr(in,3),32.)-32;

这是一种使用名称列表查找要使用的索引的方法。

data test;
  set somedataset;
  array names (2) $32 _temporary_ ('dk33' 'dk34') ;
  array lookup (2,3) _temporary_ (10 2 3 , 4 2 6) ;
  i=whichc(id, of names(*) );
  res = lookup(i,1) + lookup(i,2) + lookup(i,3) + number ;
run;

结果:

Obs     id     number    i    res

 1     dk33       50     1     65
 2     dk34      100     2    112