SAS Procedures

Help using Base SAS procedures
BookmarkSubscribeRSS Feed
weweaw
Obsidian | Level 7

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!

5 REPLIES 5
PhilC
Rhodochrosite | Level 12
Quentin
Super User

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

The Boston Area SAS Users Group is hosting free webinars!
Next up: SAS Trivia Quiz hosted by SAS on Wednesday May 21.
Register now at https://www.basug.org/events.
weweaw
Obsidian | Level 7

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

orderVar_1Var_2Var_3Var_4Var_n
10266
423464
72563
8276

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. 

Astounding
PROC Star

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.

ballardw
Super User

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

sas-innovate-white.png

Our biggest data and AI event of the year.

Don’t miss the livestream kicking off May 7. It’s free. It’s easy. And it’s the best seat in the house.

Join us virtually with our complimentary SAS Innovate Digital Pass. Watch live or on-demand in multiple languages, with translations available to help you get the most out of every session.

 

Register now!

What is Bayesian Analysis?

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 5 replies
  • 3051 views
  • 1 like
  • 5 in conversation