BookmarkSubscribeRSS Feed
Ujjawal
Quartz | Level 8

Is there any way we can use variables in different combinations in a macro? For example, there are 3 variables - Var 1 Var2 Var3.

Possible combinations i would like to make ---

Var1

Var2

Var3

Var1 Var2

Var1 Var3

Var2 Var3

Var1 Var2 Var3

Order does not matter (Var1 Var2 Var3 and Var2 Var1 Var3 - Same).

7 REPLIES 7
Reeza
Super User

What do you mean by use variables in different combination?

Ujjawal
Quartz | Level 8

What i really want to accomplish - Look at the macro below . In this case, it is selecting variables one by one and testing it as an independent variable in single linear regression model. I want the different combinations of variables to be used and testing it as independent variables in regression model.

%macro regcomb ( input =, depvar =, vars=);

%let n=%sysfunc(countw(&vars));

%do i=1 %to &n;

%let val = %scan(&vars,&i);

ods select none;

ods output ParameterEstimates=Estimate&i;

proc reg data = input;

model &depvar. = &val.;

run;

data &output;

set Estimate1 - Estimate&n;

run;

%mend;

ballardw
Super User

Look at the results of this and the VARLIST macro variable.

%macro test;

   %let v1= Var1;

   %let v2= Var2;

   %let v3= Var3;

   %let v4= Var4;

   %let v5= Var5;

   %do k=1 %to 3;

      %let ncomb=%sysfunc(comb(5,&k));

      %do j=1 %to &ncomb;

         %syscall allcomb(j, k, V1, V2, V3, V4, V5);

         %let varlist=;

         %do i = 1 %to &k; %let varlist=&varlist  &&V&i; %end ;

         %put &varlist;

      %end;/*j loop*/

   %end;/*k loop*/

%mend;

    

%test

Ujjawal
Quartz | Level 8

Thanks Ballardw. I will try and let you know about it. You are always a great help. I bow down to you 🙂

ballardw
Super User

I would start by looking in the online documentation for the Call Allcomb function which has an example of use within a macro.

TomKari
Onyx | Level 15

PROC PLAN does this kind of thing also.

Tom

JonasE
Calcite | Level 5

This might not be what you are after but this sort of does what you ask for.

data Vars;

input Variables $ ;

cards;

Var1

Var2

Var3

;

proc sql;

select *

from Vars as a, vars as b, vars as c

;

quit;

The proc sql does a self join and you get all combinations. Maybe you can work towards your goal from this.

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

Register Now

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

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
  • 7 replies
  • 2799 views
  • 0 likes
  • 5 in conversation