Quartz | Level 8

## Pick variables in different combinations

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
Super User

## Re: Pick variables in different combinations

What do you mean by use variables in different combination?

Quartz | Level 8

## Re: Pick variables in different combinations

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;

Super User

## Re: Pick variables in different combinations

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

Quartz | Level 8

## Re: Pick variables in different combinations

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

Super User

## Re: Pick variables in different combinations

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

Onyx | Level 15

## Re: Pick variables in different combinations

PROC PLAN does this kind of thing also.

Tom

Calcite | Level 5

## Re: Pick variables in different combinations

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.

Discussion stats
• 7 replies
• 1587 views
• 0 likes
• 5 in conversation