SAS - 将字段指定为另一个字段的内容

时间:2013-02-28 15:25:14

标签: sas

我有一个像这样的SAS数据集:

字段:A1 | A2 | A3 | A4 | A5 | A6 | INDEX | B ...

INDEX字段包含变量名称:A1或A2或......或A6

我希望B拥有INDEX字段中字段的内容。

如何将字段B动态分配为INDEX字段中指定的字段?

1 个答案:

答案 0 :(得分:3)

解决此问题的一种相当简单的方法是使用数组和VNAME。

data have;
input a1 a2 a3 index $;
datalines;
1 2 3 a1
2 3 4 a2
3 4 5 a3
4 5 6 a1
5 6 7 a3
;;;;
run;

data want;
set have;
array as a1-a3;
do _t = 1 to dim(as);
 if upcase(vname(as[_t])) = upcase(index) then b = as[_t];
end;
run;

如果你有一个非常大的数组来提高性能,你可以添加一个LEAVE语句if if(make it a if ... then do block)。