Hello,
I need help. I want a %let statement to equal a variable's value. If variable order had values of 1-10, I want %let x = order to resolve to the value of order, if the line had 5 for order I want x to be 5, currently for everything I've tried it always resolves to the variable name.
Thanks!
CALL SYMPUT Routine
Hi,
CALL SYMPUTX can be used to write the value of a data step variable to a macro variable, e.g:
60 data _null_; 61 order=5; 62 call symputx('x',order); 63 run; 64 65 %put &x; 5
I'm sorry, I meant I have a variable which is numeric, and I want when the let expression is call for that value to come up, it could be several different numbers. Say my data set looks like this
order | Var_1 | Var_2 | Var_3 | Var_4 | Var_n |
1 | 0 | 2 | 6 | 6 | |
4 | 2 | 34 | 6 | 4 | |
7 | 2 | 5 | 6 | 3 | |
8 | 2 | 7 | 6 | 3 |
I want to sum certain variables that are Var_n. I want to start the sum with the Var_n that is the value of order.
If I understand the question, you have a program that should not be using macro language at all, not even %let statements.
Is this the meaning of your question? On the first observation, order=1. Therefore, get the sum of Var_1 through Var_n. Similarly, on the second observation, order=4. Therefore, get the sum of Var_4 through Var_n.
If you are looking for something different than what I described, you will have to clarify your objective.
Good luck.
I think you may be looking for an array solution:
Array v var_1 - var_n;
tot=0;
do I = order to dim(v);
tot = tot + v;
end;
Assuming 1) order is a positive integer 2) order is never larger than the number of variables
Available on demand!
Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.