【发布时间】:2023-03-20 11:22:01
【问题描述】:
data example1;
input var1 var2 var3;
datalines;
10 11 14
3 5 8
0 1 2
;
data example2;
input var;
datalines;
1
2
8
;
假设 var 变量的数量取决于数据输入。我想将该数字放入宏变量并在另一个数据步骤中使用,例如:
%macro m(input);
data &input.;
set &input.;
array var_array[*] var:;
%let array_dim = dim(var_array);
do i = 1 to &array_dim;
var_array[i] = var_array[i] + 1;
end;
drop i;
run;
data example2;
set example2;
var2 = var * &array_dim; /* doesn't work */
run;
%mend;
%m(example1);
%let array_dim = dim(var_array);在第二个数据步骤中不起作用,因为 dim(var_array) 未评估,但在声明宏变量时 %eval 或 %sysevalf 在这里不起作用。如何正确地做到这一点?
【问题讨论】: