Desktop productivity for business analysts and programmers

Box Cox transformation for multiple variables

Accepted Solution Solved
Reply
New Contributor
Posts: 4
Accepted Solution

Box Cox transformation for multiple variables

I'm new to the SAS world and have been trying to figure this problem out. I have a list of variables in my data tables that could change (# included, or the names). I've been trying to make a dynamic code that runs the following code for any number of Variables (A, B, C, etc.)

 

   proc transreg data=WORK.'MY_DATA'n;
      model boxcox(Var_A Var_B ...) = identity(DEP_VAR);
   run;

 

I've been researching and found something along these lines. But I can't seem to figure out how to take the variable output below and use it in the function above. Any help would be appreciated!

 

PROC CONTENTS DATA = WORK.'MY_DATA'n
OUT=VAR_NAMES(KEEP = NAME) NOPRINT;
RUN; 

DATA PARSE;
SET VAR_NAMES;
WHERE (NAME NOT IN ('DEP_VAR','ID_VAR'));
RUN; 

 


Accepted Solutions
Solution
‎08-23-2016 03:03 PM
Super User
Posts: 18,997

Re: Box Cox transformation for multiple variables

You need to create a macro variable and then pass that to the code.

 

http://support.sas.com/documentation/cdl/en/mcrolref/67912/HTML/default/viewer.htm#n1y2jszlvs4hugn14...

 

PROC CONTENTS DATA = WORK.'MY_DATA'n
OUT=VAR_NAMES(KEEP = NAME) NOPRINT;
RUN; 


Proc SQL;
select name into :var_list separated  by " "
from var_names
WHERE (NAME NOT IN ('DEP_VAR','ID_VAR'));
quit;

*Display the variable list in the log for verification;
%put &var_list;

Then apply that to your data:

   proc transreg data=WORK.'MY_DATA'n;
      model boxcox( &var_list. ) = identity(DEP_VAR);
   run;

View solution in original post


All Replies
Solution
‎08-23-2016 03:03 PM
Super User
Posts: 18,997

Re: Box Cox transformation for multiple variables

You need to create a macro variable and then pass that to the code.

 

http://support.sas.com/documentation/cdl/en/mcrolref/67912/HTML/default/viewer.htm#n1y2jszlvs4hugn14...

 

PROC CONTENTS DATA = WORK.'MY_DATA'n
OUT=VAR_NAMES(KEEP = NAME) NOPRINT;
RUN; 


Proc SQL;
select name into :var_list separated  by " "
from var_names
WHERE (NAME NOT IN ('DEP_VAR','ID_VAR'));
quit;

*Display the variable list in the log for verification;
%put &var_list;

Then apply that to your data:

   proc transreg data=WORK.'MY_DATA'n;
      model boxcox( &var_list. ) = identity(DEP_VAR);
   run;
☑ This topic is solved.

Need further help from the community? Please ask a new question.

Discussion stats
  • 1 reply
  • 273 views
  • 0 likes
  • 2 in conversation