manage variable lists with macro variables 1 for improved readability and modifiability
TRANSCRIPT
![Page 1: Manage Variable Lists with Macro Variables 1 for Improved Readability and Modifiability](https://reader034.vdocuments.mx/reader034/viewer/2022051315/56649f005503460f94c1609a/html5/thumbnails/1.jpg)
Manage Variable Lists with Macro Variables
1
for Improved Readability and Modifiability
![Page 2: Manage Variable Lists with Macro Variables 1 for Improved Readability and Modifiability](https://reader034.vdocuments.mx/reader034/viewer/2022051315/56649f005503460f94c1609a/html5/thumbnails/2.jpg)
The Problem/Opportunity
• Lists of variables occur frequently• Hard for others to read/verify • Samenesses/differences not apparent• Often have sublists and variations
![Page 3: Manage Variable Lists with Macro Variables 1 for Improved Readability and Modifiability](https://reader034.vdocuments.mx/reader034/viewer/2022051315/56649f005503460f94c1609a/html5/thumbnails/3.jpg)
Proposed Solution
• Assign each sublist to a macro variable• Name the macro variables informatively• Use as needed in executable code• Manipulate macroed string for alterations
![Page 4: Manage Variable Lists with Macro Variables 1 for Improved Readability and Modifiability](https://reader034.vdocuments.mx/reader034/viewer/2022051315/56649f005503460f94c1609a/html5/thumbnails/4.jpg)
Example Code
4
Title1 Explore distributions of independent variables;
proc freq data=ChemoData; table race gender region prevCancer stage grade insur/missing;...;
proc univariate data=ChemoData; var age BMI dateDiag income; histogram;...
![Page 5: Manage Variable Lists with Macro Variables 1 for Improved Readability and Modifiability](https://reader034.vdocuments.mx/reader034/viewer/2022051315/56649f005503460f94c1609a/html5/thumbnails/5.jpg)
Example Code (2)
5
Title1 Check for multicolinearity; proc reg data=ChemoData; model chemoRecvd = age BMI dateDiag income/vif;
Title1 Perform logistic regression; proc logistic data=ChemoData simple desc; class race gender region prevCancer stage grade insur /param=ref desc; model chemoDi = race gender region prevCancer
stage grade insur age BMI dateDiag income/scale=none rsq lackfit;
![Page 6: Manage Variable Lists with Macro Variables 1 for Improved Readability and Modifiability](https://reader034.vdocuments.mx/reader034/viewer/2022051315/56649f005503460f94c1609a/html5/thumbnails/6.jpg)
Assign the Lists
6
%let cateVars=race gender region prevCancer stage grade insur;%let contVars=age BMI dateDiag income;...
![Page 7: Manage Variable Lists with Macro Variables 1 for Improved Readability and Modifiability](https://reader034.vdocuments.mx/reader034/viewer/2022051315/56649f005503460f94c1609a/html5/thumbnails/7.jpg)
Example Code
7
Title1 Explore distributions of independent variables;
proc freq data=ChemoData; table &cateVars /missing;...;
proc univariate data=ChemoData; var &contVars; histogram;...
![Page 8: Manage Variable Lists with Macro Variables 1 for Improved Readability and Modifiability](https://reader034.vdocuments.mx/reader034/viewer/2022051315/56649f005503460f94c1609a/html5/thumbnails/8.jpg)
Example Code
8
Title1 Check for multicolinearity in continuous IVs; proc reg data=ChemoData; model chemoRecvd = &contVars /vif;run;Title1 Perform logistic regression; proc logistic data=ChemoData simple desc; class &cateVars /param=ref desc; model chemoDi = &cateVars &contIndVars /scale=none rsq lackfit
![Page 9: Manage Variable Lists with Macro Variables 1 for Improved Readability and Modifiability](https://reader034.vdocuments.mx/reader034/viewer/2022051315/56649f005503460f94c1609a/html5/thumbnails/9.jpg)
Handling Alterations/Variations
• Change the number of categories used for a variable
• Drop uninformative variables• Add variables for portion of analysis• => Can do all of these without cut/paste• => Can make the alterations explicit
![Page 10: Manage Variable Lists with Macro Variables 1 for Improved Readability and Modifiability](https://reader034.vdocuments.mx/reader034/viewer/2022051315/56649f005503460f94c1609a/html5/thumbnails/10.jpg)
Replacing a Variable
10
%macro replaceWord( /*in macro string */ inStr=, /*list of words altered*/ swapOut= /*word replaced list*/, swapIn=, /*replacement word*/ resMacVar= /*macvar receiving result*/);
%let newList=; *Use just 2 race categor;%replaceWord(inStr=&cateVars,swapOut=race , swapIn=race2c, resMacVar=newList);
![Page 11: Manage Variable Lists with Macro Variables 1 for Improved Readability and Modifiability](https://reader034.vdocuments.mx/reader034/viewer/2022051315/56649f005503460f94c1609a/html5/thumbnails/11.jpg)
Removing Variables
11
%macro removeWords( wordList=, /*words to remove*/ inMacVar=, /*list of words to alter*/ outMacVar= /*result list of words*/);
%let newList=; *Drop uninformative vars;%removeWords(wordList=race insur, inMacVar=cateVars, outMacVar=newList);
![Page 12: Manage Variable Lists with Macro Variables 1 for Improved Readability and Modifiability](https://reader034.vdocuments.mx/reader034/viewer/2022051315/56649f005503460f94c1609a/html5/thumbnails/12.jpg)
Take Aways
• Long list of vars need occur only once• Readability benefits when lists are named • Modifiability benefits when occur only once • Both benefit when alterations are explicit
Just do it!