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
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
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.