SAS Macro : A Dynamic %Do Loop

Suppose you need to pass a variable in loop based on the input defined in a macro.
%macro report (input=, var = , class=);
%let n=%sysfunc(countw(&var));
%do i=1 %to &n;
%let val = %scan(&var,&i);
proc means data = &input noprint nway;
class &class;
vars &val;
output out=out&i mean= median= / autoname;
run;
%end;
%mend;

options mprint;
%report(input= test, var = b c, class=a);

When you execute the above sas program, it generates the following statements :

proc means data = &input noprint nway;
class a;
vars b;
output out=out1 mean= median= / autoname;
run;

proc means data = &input noprint nway;
class a;
vars c;
output out=out2 mean= median= / autoname;
run;
Love this Post? Spread the Word!
Comment and share to motivate us to write more!
About Author:

Deepanshu founded ListenData with a simple objective - Make analytics easy to understand and follow. He has over 8 years of experience in data science. During his tenure, he has worked with global clients in various domains like Banking, Insurance, Telecom and Human Resource.

Get Free Email Updates :
*Please confirm your email address by clicking on the link sent to your Email*
Related Posts:
2 Responses to "SAS Macro : A Dynamic %Do Loop"
  1. Hi deepanshu

    What does sysfunc do????..does it convert into character value??

    ReplyDelete
    Replies
    1. Sysfunc is used to apply functions within macro. You can use all functions of data steps by using sysfunc

      Delete

We have Zero Tolerance to Spam. Comments with links will be deleted immediately upon our review.

Next → ← Prev
Scroll to Top