
Untitled
By: a guest on
Jul 15th, 2012 | syntax:
None | size: 1.25 KB | hits: 12 | expires: Never
Dynamic variable names in SAS
Index Var1 Var2 Var3
1 78.3 54.7 79.8
3 67.2 56.2 12.3
2 65.3 45.2 98.1
1 56.2 49.7 11.3
1 67.2 98.2 98.6
Index Var1 Var2 Var3 Var_Index
1 78.3 54.7 79.8 78.3
3 67.2 56.2 12.3 12.3
2 65.3 45.2 98.1 45.2
1 56.2 49.7 11.3 56.2
1 67.2 98.2 98.6 67.2
data have;
input Index Var1 Var2 Var3;
cards;
1 78.3 54.7 79.8
3 67.2 56.2 12.3
2 65.3 45.2 98.1
1 56.2 49.7 11.3
1 67.2 98.2 98.6
;
run;
data want;
set have;
array vars(*) var: ;
var_index=vars(index);
run;
data assign_value;
set have;
if index = 1 then var_index = var1;
else if index = 2 then var_index = var2;
else if index = 3 then var_index = var3;
run;
data want;
set have;
length _var_name $32 _var_num 5;
array vars(*) var: ;
/* if you want name of variable */
_var_name=VNAME(vars(index));
/* if you want numeric suffix of variable
and suffix is not same as position of variable in array
(so that vars(index) is not usable */
_var_num=INPUT(SUBSTR(_var_name, ANYDIGIT(_var_name)),32.);
run;
var_index = vvaluex(compress("var" || put(index, 8.)));