是否可以使用数据集列(字符变量) 在数据步骤中引用与“字符名称”相同名称的数组 在数据步骤的列中。
一个例子:
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是字符,所以它不能引用数组。但是,对此有什么解决方案吗?请帮忙...
答案 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