我有一个这样的 SAS 数据集:
领域:A1 | A2 | A3 | A4 | A5 | A6 | INDEX | B
...
该INDEX
字段包含变量名称:A1 或 A2 或 ... 或 A6
我想B
拥有该字段中的INDEX
字段内容。
如何将字段动态分配为B
字段中指定的INDEX
字段?
我有一个这样的 SAS 数据集:
领域:A1 | A2 | A3 | A4 | A5 | A6 | INDEX | B
...
该INDEX
字段包含变量名称:A1 或 A2 或 ... 或 A6
我想B
拥有该字段中的INDEX
字段内容。
如何将字段动态分配为B
字段中指定的INDEX
字段?
解决此问题的一种相当简单的方法是使用数组和 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;
如果您有一个非常大的数组来提高性能,您可以在 if (make it a if... then do block) 中添加一个 LEAVE 语句。