BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
brophymj
Quartz | Level 8


I have a data set with a field called Key which has values ranging from 1 to 25 and these represent different conditions;

Condition one is: if Fieldx = 1 then let comment = "exclud"e

Condition two is: if Fieldx = 2 and Fieldy ne 4 then comment =" always include"

and so on.

So the conditions vary in terms of the number of fields that affect the condition

I want to build a macro like;

%macro test(condition);

data test;

set test;

if &condition;

run;

%mend;

%test(fieldx=2);

%test(fieldx=2 and fieldy ne 4);

Something like this but which works.

Basically I can do this very simply if there is only one field affecting the condition but if it varies is there a way of building this into the macro

1 ACCEPTED SOLUTION

Accepted Solutions
arodriguez
Lapis Lazuli | Level 10

Hi,

Have you tried to use the function %STR()? All macro should work if you call it like

%test(%STR(fieldx=2));

%test(%STR(fieldx=2 and fieldy ne 4));

View solution in original post

2 REPLIES 2
arodriguez
Lapis Lazuli | Level 10

Hi,

Have you tried to use the function %STR()? All macro should work if you call it like

%test(%STR(fieldx=2));

%test(%STR(fieldx=2 and fieldy ne 4));

brophymj
Quartz | Level 8

Thanks a million, that worked!

sas-innovate-white.png

Register Today!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9.

 

Early bird rate extended! Save $200 when you sign up by March 31.

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
  • 2 replies
  • 1276 views
  • 1 like
  • 2 in conversation