<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Macro to loop through numerous DVs in regression models in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Macro-to-loop-through-numerous-DVs-in-regression-models/m-p/377579#M90682</link>
    <description>&lt;P&gt;Hi all, I'm sorry if this has been answered before but here's my question:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have 26 outcome variables and need to run a logstic regression with&amp;nbsp;each one as the dependent variable in its&amp;nbsp;own&amp;nbsp;model in order to observe the odds ratios for each outcome.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So to simplify my code, I've got something like this:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;%let out1=a;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;%let out2=b;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;%let out3=c;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;...&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;%let out26=z;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;/*out1*/&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;proc logistic data=&amp;amp;dset;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; class &amp;amp;exposure(param=ref ref='0');&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; model &amp;amp;out1(event='1') = &amp;amp;exposure;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; title "&amp;amp;out1 crude";&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;run; title;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;/*out2*/&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;proc logistic data=&amp;amp;dset;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; class &amp;amp;exposure(param=ref ref='0');&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; model &amp;amp;out2(event='1') = &amp;amp;exposure;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; title "&amp;amp;out2 crude";&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;run; title;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;And basically have just been copy pasting this 26 times and changing out1, out2, out3, etc in order to get the results. I'm wondering if there's any way with macros / do loops to simply write something like:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;do i = 1 to 26;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;/*all outcomes*/&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;proc logistic data=&amp;amp;dset;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; class &amp;amp;exposure(param=ref ref='0');&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; model &amp;amp;out(i)(event='1') = &amp;amp;exposure;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; title "&amp;amp;out(i) crude";&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;run; title;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;This of course doesn't work, and so I'm wondering if&amp;nbsp;&lt;/SPAN&gt;someone knows of a solution here?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks so much!&lt;/P&gt;
&lt;P&gt;-Nick&lt;/P&gt;</description>
    <pubDate>Wed, 19 Jul 2017 20:30:47 GMT</pubDate>
    <dc:creator>nick1990</dc:creator>
    <dc:date>2017-07-19T20:30:47Z</dc:date>
    <item>
      <title>Macro to loop through numerous DVs in regression models</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-to-loop-through-numerous-DVs-in-regression-models/m-p/377579#M90682</link>
      <description>&lt;P&gt;Hi all, I'm sorry if this has been answered before but here's my question:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have 26 outcome variables and need to run a logstic regression with&amp;nbsp;each one as the dependent variable in its&amp;nbsp;own&amp;nbsp;model in order to observe the odds ratios for each outcome.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So to simplify my code, I've got something like this:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;%let out1=a;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;%let out2=b;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;%let out3=c;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;...&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;%let out26=z;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;/*out1*/&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;proc logistic data=&amp;amp;dset;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; class &amp;amp;exposure(param=ref ref='0');&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; model &amp;amp;out1(event='1') = &amp;amp;exposure;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; title "&amp;amp;out1 crude";&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;run; title;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;/*out2*/&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;proc logistic data=&amp;amp;dset;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; class &amp;amp;exposure(param=ref ref='0');&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; model &amp;amp;out2(event='1') = &amp;amp;exposure;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; title "&amp;amp;out2 crude";&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;run; title;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;And basically have just been copy pasting this 26 times and changing out1, out2, out3, etc in order to get the results. I'm wondering if there's any way with macros / do loops to simply write something like:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;do i = 1 to 26;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;/*all outcomes*/&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;proc logistic data=&amp;amp;dset;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; class &amp;amp;exposure(param=ref ref='0');&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; model &amp;amp;out(i)(event='1') = &amp;amp;exposure;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; title "&amp;amp;out(i) crude";&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;run; title;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;This of course doesn't work, and so I'm wondering if&amp;nbsp;&lt;/SPAN&gt;someone knows of a solution here?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks so much!&lt;/P&gt;
&lt;P&gt;-Nick&lt;/P&gt;</description>
      <pubDate>Wed, 19 Jul 2017 20:30:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-to-loop-through-numerous-DVs-in-regression-models/m-p/377579#M90682</guid>
      <dc:creator>nick1990</dc:creator>
      <dc:date>2017-07-19T20:30:47Z</dc:date>
    </item>
    <item>
      <title>Re: Macro to loop through numerous DVs in regression models</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-to-loop-through-numerous-DVs-in-regression-models/m-p/377586#M90684</link>
      <description>&lt;P&gt;Nick,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;While&amp;nbsp;this can be done, you have to realize that macro language will not cut down on the time it takes to run.&amp;nbsp; It will cut down on the typing, and the chance of making a mistake.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Expect that you will call the macro specifying all the information:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;%run26 (dset=some_data_set_name, exposure=some_variable_name, out_list=a b c d e ... x y z)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So you don't get out of typing all the variable names, but you still get out of typing the repetitive parts.&amp;nbsp; Here's a way to define such a macro:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;%macro run26 (dset=, exposure=, out_list=);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; %local i next_name;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; %do i=1 %to %sysfunc(countw(&amp;amp;out_list));&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %let next_name = %scan(&amp;amp;out_list, &amp;amp;i);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;proc logistic data=&amp;amp;dset;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; class &amp;amp;exposure(param=ref ref='0');&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; model &amp;amp;next_name (event='1') = &amp;amp;exposure;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; title "&amp;amp;next_name crude";&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;run; title;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; %end;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;%mend run26;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;You don't actually have to use 26 variables ... the macro counts how many names appear in your list.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 19 Jul 2017 20:49:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-to-loop-through-numerous-DVs-in-regression-models/m-p/377586#M90684</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2017-07-19T20:49:19Z</dc:date>
    </item>
    <item>
      <title>Re: Macro to loop through numerous DVs in regression models</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-to-loop-through-numerous-DVs-in-regression-models/m-p/377602#M90689</link>
      <description>&lt;P&gt;You can also transpose the data to a long format and then use a BY statement. You may have to combine variables to get exactly what you want. It should be quicker than the multiple calls and the results can be appended into one data set with this method.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://communities.sas.com/t5/SAS-Communities-Library/How-do-I-write-a-macro-to-run-multiple-regressions/ta-p/223663" target="_blank"&gt;https://communities.sas.com/t5/SAS-Communities-Library/How-do-I-write-a-macro-to-run-multiple-regressions/ta-p/223663&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 19 Jul 2017 21:16:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-to-loop-through-numerous-DVs-in-regression-models/m-p/377602#M90689</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2017-07-19T21:16:59Z</dc:date>
    </item>
    <item>
      <title>Re: Macro to loop through numerous DVs in regression models</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-to-loop-through-numerous-DVs-in-regression-models/m-p/377835#M90748</link>
      <description>&lt;P&gt;Thanks a ton!! This is excellent and worked perfectly&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Very kindly appreciated,&lt;/P&gt;
&lt;P&gt;Nick&lt;/P&gt;</description>
      <pubDate>Thu, 20 Jul 2017 16:37:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-to-loop-through-numerous-DVs-in-regression-models/m-p/377835#M90748</guid>
      <dc:creator>nick1990</dc:creator>
      <dc:date>2017-07-20T16:37:43Z</dc:date>
    </item>
    <item>
      <title>Re: Macro to loop through numerous DVs in regression models</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-to-loop-through-numerous-DVs-in-regression-models/m-p/377836#M90749</link>
      <description>&lt;P&gt;Wow very interesting and not at all something I'd have thought of! Thank you for your help!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Very kindly appreciated,&lt;/P&gt;
&lt;P&gt;Nick&lt;/P&gt;</description>
      <pubDate>Thu, 20 Jul 2017 16:39:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-to-loop-through-numerous-DVs-in-regression-models/m-p/377836#M90749</guid>
      <dc:creator>nick1990</dc:creator>
      <dc:date>2017-07-20T16:39:07Z</dc:date>
    </item>
  </channel>
</rss>

