<?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 Re: how to make a do loop for running the same code multiple times for different variable ? in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/how-to-make-a-do-loop-for-running-the-same-code-multiple-times/m-p/287333#M59097</link>
    <description>&lt;P&gt;Thank you, Reeza.&lt;/P&gt;
&lt;P&gt;Luckily you answered both my questions. Can you briefly show me how to use by and not split the files?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 26 Jul 2016 20:10:24 GMT</pubDate>
    <dc:creator>fengyuwuzu</dc:creator>
    <dc:date>2016-07-26T20:10:24Z</dc:date>
    <item>
      <title>how to make a do loop for running the same code multiple times for different variable ?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-make-a-do-loop-for-running-the-same-code-multiple-times/m-p/287300#M59085</link>
      <description>&lt;P&gt;I need to run the same code for 5 variables, and each variable 4 times, so total 20 times:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro scatter(var=,p=);
data test;
set percent.&amp;amp;var._&amp;amp;p;
ID = _n_;  /* have to create a ID variable as x-axis variable for scatter plot purpose */
run;
proc sgplot data=test;
scatter x=ID y=&amp;amp;var;
title "&amp;amp;var  &amp;amp;p";
run;
%mend scatter;
%scatter(var=betting_days,p=p90)
%scatter(var=betting_days,p=p95)
%scatter(var=betting_days,p=p98)
%scatter(var=betting_days,p=p99)

%scatter(var=total_bet_times,p=p90)
%scatter(var=total_bet_times,p=p95)
%scatter(var=total_bet_times,p=p98)
%scatter(var=total_bet_times,p=p99)

%scatter(var=max_wager,p=p90)
%scatter(var=max_wager,p=p95)
%scatter(var=max_wager,p=p98)
%scatter(var=max_wager,p=p99)

%scatter(var=sum_wager,p=p90)
%scatter(var=sum_wager,p=p95)
%scatter(var=sum_wager,p=p98)
%scatter(var=sum_wager,p=p99)

%scatter(var=aver_wager_day,p=p90)
%scatter(var=aver_wager_day,p=p95)
%scatter(var=aver_wager_day,p=p98)
%scatter(var=aver_wager_day,p=p99)
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Is there a way to be more efficient, i.e. no need to run 20 times?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks&lt;/P&gt;</description>
      <pubDate>Tue, 26 Jul 2016 19:02:01 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-make-a-do-loop-for-running-the-same-code-multiple-times/m-p/287300#M59085</guid>
      <dc:creator>fengyuwuzu</dc:creator>
      <dc:date>2016-07-26T19:02:01Z</dc:date>
    </item>
    <item>
      <title>Re: how to make a do loop for running the same code multiple times for different variable ?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-make-a-do-loop-for-running-the-same-code-multiple-times/m-p/287314#M59091</link>
      <description>&lt;P&gt;It depends on what you mean by "more efficient".&amp;nbsp; The macro will run 20 times.&amp;nbsp; But you can automate some of that, so that the programming workload is lower.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I'm going to hard-code the levels of 90, 95, 98, 99.&amp;nbsp; That too can be automated ... but of course that requires more complex programming.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;%macro run_scatter (varlist=);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; %local i nextvar;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; %do i=1 %to %sysfunc(countw(&amp;amp;varlist));&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %let nextvar = %scan(&amp;amp;varlist, &amp;amp;i);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %scatter (var=&amp;amp;nextvar, p=p90)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %scatter (var=&amp;amp;nextvar, p=p95)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %scatter (var=&amp;amp;nextvar, p=p98)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %scatter (var=&amp;amp;nextvar, p=p99)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; %end;&lt;/P&gt;
&lt;P&gt;%mend run_scatter;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It's untested code, but assuming there are no errors, all you need to do is call the macro:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;%run_scatter (varlist=betting_days total_bet_times max_wager sum_wager aver_wager_day)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Pass any list of variable names that should be plotted.&lt;/P&gt;</description>
      <pubDate>Tue, 26 Jul 2016 19:17:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-make-a-do-loop-for-running-the-same-code-multiple-times/m-p/287314#M59091</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2016-07-26T19:17:19Z</dc:date>
    </item>
    <item>
      <title>Re: how to make a do loop for running the same code multiple times for different variable ?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-make-a-do-loop-for-running-the-same-code-multiple-times/m-p/287316#M59092</link>
      <description>&lt;P&gt;This is great example of why you shouldn't split data up. You then end up doing things like this rather than using BY groups.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Given your current situation I would recommend a call execute within a data step. Untested:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data macro_call;
do var='betting_days', 'total_bet_times', 'max_wager', 'sum_wager';
do p='p90', 'p95', 'p98','p99';

str=catt(
    '%scatter(var=', 
    var, 
    ', p=', 
    p, 
   ')'
         );

call execute(str);

end;
end;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 26 Jul 2016 19:20:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-make-a-do-loop-for-running-the-same-code-multiple-times/m-p/287316#M59092</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2016-07-26T19:20:44Z</dc:date>
    </item>
    <item>
      <title>Re: how to make a do loop for running the same code multiple times for different variable ?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-make-a-do-loop-for-running-the-same-code-multiple-times/m-p/287333#M59097</link>
      <description>&lt;P&gt;Thank you, Reeza.&lt;/P&gt;
&lt;P&gt;Luckily you answered both my questions. Can you briefly show me how to use by and not split the files?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 26 Jul 2016 20:10:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-make-a-do-loop-for-running-the-same-code-multiple-times/m-p/287333#M59097</guid>
      <dc:creator>fengyuwuzu</dc:creator>
      <dc:date>2016-07-26T20:10:24Z</dc:date>
    </item>
    <item>
      <title>Re: how to make a do loop for running the same code multiple times for different variable ?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-make-a-do-loop-for-running-the-same-code-multiple-times/m-p/289875#M59902</link>
      <description>&lt;P&gt;Transpose so variables are long and use BY. Here's a quick sketch. You can add in the percentile part by adding another BY variable.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data flipped;
set data;
array vars(*) betting_days total_time average_bat;

do i=1 to dim(vars)
var=vname(vars(i));
value=vars(i);
output;
end;

drop betting_days total_time average_bat;

run;

proc sort data=flipped;
by var;
run;

proc sgplot data=flipped;
title '#byval(vars) by ID';
by vars;
scatter x=id y=value;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 05 Aug 2016 19:59:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-make-a-do-loop-for-running-the-same-code-multiple-times/m-p/289875#M59902</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2016-08-05T19:59:38Z</dc:date>
    </item>
  </channel>
</rss>

