变量名称超出数组值

时间:2014-11-19 18:39:03

标签: sas

我有类似的数据 (由于数组下标超出范围错误,这不会起作用):

    data test;
    array id {5} (1, 8, 4, 12, 23);
    array a_ {5};
    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_时才有效:

    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。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:4)

PROC TRANSPOSE通常是最简单的方法。

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

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;