Arrays sas中的动态变量名

Arrays sas中的动态变量名,arrays,sas,Arrays,Sas,对于类似的问题,我的情况有一点不同,变量名是Var12、var24、Var36,而不是Var1、Var2和Var3 它给出了数组下标超出范围的错误 data have; input Index Var12 Var2 Var3; cards; 12 78.3 54.7 79.8 36 67.2 56.2 12.3 24 65.3 45.2 98.1 12 56.2 49.7 11.3 12 67.2 98.2 98.6

对于类似的问题,我的情况有一点不同,变量名是Var12、var24、Var36,而不是Var1、Var2和Var3

它给出了数组下标超出范围的错误

data have;
input Index Var12 Var2 Var3;
cards;
12      78.3   54.7  79.8
36      67.2   56.2  12.3
24      65.3   45.2  98.1
12      56.2   49.7  11.3
12      67.2   98.2  98.6
;
run;

data want;
set have;
array vars(*) var: ;
var_index=vars(Index);
run;

由于有3个变量的名称以var开头,因此将创建3个数值变量的数组,因此索引值应介于1到3之间

任何大于3的值都将给出超出范围的错误。您可以使用dim函数来查找所声明数组中的元素数

代码声明:

num_val = dim(vars);

由于有3个变量的名称以var开头,因此将创建3个数值变量的数组,因此索引值应介于1到3之间

任何大于3的值都将给出超出范围的错误。您可以使用dim函数来查找所声明数组中的元素数

代码声明:

num_val = dim(vars);

我想你的
输入
语句有输入错误

假设它应该是

input Index Var12 Var24 Var36 ;
我想你的
输入
语句有输入错误

假设它应该是

input Index Var12 Var24 Var36 ;
而是查看
vvaluex
函数。它允许您指定定义变量的字符串,而不是采用变量名称(而不是字符串)的
vvalue


而是查看
vvaluex
函数。它允许您指定定义变量的字符串,而不是采用变量名称(而不是字符串)的
vvalue


这对我来说似乎很容易。我添加了一些解释,所以答案更完整。这对我来说似乎是最简单的。我添加了一些解释,因此答案更完整。这是一个好的注释,因为它指出了代码中的错误,但实际上并没有回答问题-问题是如何创建
var_index
,但这并没有做到。这将是一个好的注释,因为它指出了代码中的错误,但它实际上并没有回答这个问题——问题是如何创建
var\u索引
,而这并没有做到。