所以我的数据集包含变量和值,如下所示:
A1 A2 A3 A4 A5 A6
1 3 5 6 10 2
在某些情况下,变量可以达到A2000。我想使用数组对每个变量执行相同的操作。有没有办法动态设置数组的大小而无需手动输入?
我正在努力的示例代码在
之下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 = 6。
答案 0 :(得分:1)
当然,请使用:
通配符。这只适用于数据集中已经定义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;