Sas 数组值中的变量名

Sas 数组值中的变量名,sas,Sas,我有一个类似的数据 (由于数组下标超出范围错误,此操作无效): 我想做的是, 创建变量以“a”和数组id的值开头。 意思:a_1,a_8,a_4,a_12,a_23 仅当我声明包含23个成员的数组a_uu时,此操作才有效: data test; array id {5} (1, 8, 4, 12, 23); array a_ {23}; do i = 1 to 5; a_[id[i]] = id[i]; end; run; 但是我

我有一个类似的数据 (由于数组下标超出范围错误,此操作无效):

我想做的是, 创建变量以“a”和数组id的值开头。 意思:a_1,a_8,a_4,a_12,a_23

仅当我声明包含23个成员的数组a_uu时,此操作才有效:

    data test;
    array id {5} (1, 8, 4, 12, 23);
    array a_ {23};
    do i = 1 to 5;
        a_[id[i]] = id[i];
    end;
    run;
但是我得到了很多我不需要的缺失变量。 我只想要上面5个


我怎样才能做到这一点呢?

PROC转置通常是最简单的方法

首先,制作一个垂直数据集,如下所示:

data vert;
  array id[5] (1,8,4,12,23);
  do _i = 1 to dim(id);
    varname = cats('A_',id[_i]);
    vvalue = 1; *it is not apparent to me what the value should be in A_12 or whatnot;
    output;
  end;
run;
然后PROC TRANSPOSE生成所需的数据集

proc transpose data=vert out=want;
  id varname;
  var vvalue;
run;

PROC转置通常是最简单的方法

首先,制作一个垂直数据集,如下所示:

data vert;
  array id[5] (1,8,4,12,23);
  do _i = 1 to dim(id);
    varname = cats('A_',id[_i]);
    vvalue = 1; *it is not apparent to me what the value should be in A_12 or whatnot;
    output;
  end;
run;
然后PROC TRANSPOSE生成所需的数据集

proc transpose data=vert out=want;
  id varname;
  var vvalue;
run;

太好了,乔。非常感谢!太好了,乔。非常感谢!