Is there a way in SAS to specify dynamic variable names in code? i.e. use different variables on different observations based on the value of another variable?
For example, my input data set could be:
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
And I want to add a column that holds the value of Var*Index*. i.e. the output I'd want would be:
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
I'm unable to use call symput
to get this to work. Also I should mention that my real problem is slightly more complicated, and I already have a messy brute force method but I'm looking for something clean.
If you create an array of Var1 - VarN then you can easily reference the value stored in Index.
So what you need is VNAME() function.
Wouldn't a data step work?
I might be missing something? but this should give you the result from your question.
I think the simplest solution would be to use VVALUEX function. It creates the variable name using the index, and then supplies it as an argument to the function -