Arrays 无需硬编码即可动态设置数组大小

Arrays 无需硬编码即可动态设置数组大小,arrays,sas,Arrays,Sas,我有一些数据集,其中包含变量和值,如下所示: A1 A2 A3 A4 A5 A6 1 3 5 6 10 2 在某些情况下,变量可能高达2000个。我想使用数组对每个变量执行相同的操作。有没有一种方法可以在不手动键入的情况下动态设置数组的大小 下面是我正在努力的示例代码 data A; input A1-A6; datalines; 1 3 5 6 10 2; run; data A; set A; array a[*] a1-a&size; do i=1 to &si

我有一些数据集,其中包含变量和值,如下所示:

A1 A2 A3 A4 A5 A6
1  3  5  6  10 2
在某些情况下,变量可能高达2000个。我想使用数组对每个变量执行相同的操作。有没有一种方法可以在不手动键入的情况下动态设置数组的大小

下面是我正在努力的示例代码

data A;
input A1-A6;
datalines;
1 3 5 6 10 2;
run;

data A;
set A;
array a[*] a1-a&size;
do i=1 to &size;
{perform some operation here}
end;
run;

我的问题是如何编写代码来获取表示数组大小的参数&size?在本例中,&size=six。

当然,请使用
通配符。但是,这仅在数据集中已经定义了
a1-a6
时有效

data have;
  input a1-a6;
datalines;
1 2 3 4 5 6
7 8 9 10 11 12
;;;;
run;

data want;
  set have;
  array a a:;
  do i=1 to dim(a);
    sum = sum(sum ,a[i]);
  end;
run;
否则,你上面所说的绝对有效。不过,您不需要
[*]
位,我更喜欢在循环控件上保留
的dim
,而不是
&size
,以防将来更改它的工作方式。当然,您需要有一种方法来确定取决于您的数据的
&size

%let size=6;
data want;
  set have;
  array a a1-a&size.;
  do i=1 to dim(a);
    sum = sum(sum ,a[i]);
  end;
run;