Hi,
I am trying to create a macro variable M that takes 1 if macro variable X takes values among a set of values defined by another macro variable Y.
For example, %LET X=a; %LET Y=a b c d e f g;
Since a is one of values of Y, so macro variable M takes 1; otherwise, it takes 0.
Can you please show me some quick way to write it? In STATA, it is something like
Local M: list X in Y
Thanks in advance.
Sunny
This should be easy enough:
%if %index(%str( &y ), %str( &x )) %then %let m=1;
%else %let m=0;
It's important to keep the blanks inside the parentheses, before and after &x and &y.
Good luck.
This should be easy enough:
%if %index(%str( &y ), %str( &x )) %then %let m=1;
%else %let m=0;
It's important to keep the blanks inside the parentheses, before and after &x and &y.
Good luck.
many thanks it works.
You give the following a try:
%LET X=d;
%LET Y=a b c d e f g;
%let M = %sysfunc(sign(%index(&y,&x)));
%put the value of M is >>> &M;
many thanks for your help
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.