SAS我想使用迭代变量来声明数据集上的变量

SAS我想使用迭代变量来声明数据集上的变量,sas,Sas,我想使用I作为定义变量的一部分,如var_1、var_2、…var_16 另外,如果我有费率1,费率2,…费率15 我如何才能做到这一点: 使该变量1=Rate1(用其值1代替) 这是我对你所问问题的最佳猜测:你有16个变量,var_1,…,var_16,你想把它们的每个值分配给另一组变量Rate1,…,Rate16 这将有助于: data s; array var{*} var_1-var_16; array Rate{16}; do i=1 to 15; Rate{i}

我想使用
I
作为定义变量的一部分,如var_1、var_2、…var_16 另外,如果我有费率1,费率2,…费率15

我如何才能做到这一点:

使该变量1=Rate1(用其值1代替)


这是我对你所问问题的最佳猜测:你有16个变量,
var_1,…,var_16
,你想把它们的每个值分配给另一组变量
Rate1,…,Rate16

这将有助于:

data s;
  array var{*} var_1-var_16;
  array Rate{16};

  do i=1 to 15;
    Rate{i} = var{i};
  end;
 drop i;
run;

这里有一个使用宏的方法。就我个人而言,我发现解析%比使用数组更容易,但那只是我自己

%macro foo;
data s;
  %do i = 1 %to 16;
  var_&i = rate&i;
  %end;
run;
%mend;

%foo

你的问题不清楚。SAS数据集不能包含数组;它们只有变量。数据集中的变量是什么?不需要时不要使用宏。数组不难学习或使用,比任何一天的宏代码都干净。我没有说它们很难学习或使用。与其他语言相比,我发现它们是一种相当笨拙的准列索引方法。
%macro foo;
data s;
  %do i = 1 %to 16;
  var_&i = rate&i;
  %end;
run;
%mend;

%foo