Turn on suggestions

Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.

Showing results for

- Home
- /
- Programming
- /
- Programming
- /
- Pick variables in different combinations

Options

- RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Mute
- Printer Friendly Page

- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content

Posted 06-24-2015 05:15 PM
(1586 views)

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

- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content

What do you mean by use variables in different combination?

- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content

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;

- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content

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

- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content

- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content

- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content

PROC PLAN does this kind of thing also.

Tom

- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content

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.

Build your skills. Make connections. Enjoy creative freedom. Maybe change the world. **Registration is now open through August 30th**. Visit the SAS Hackathon homepage.

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.