<?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: SAS Macro Repeat Programs in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/SAS-Macro-Repeat-Programs/m-p/321780#M71116</link>
    <description>&lt;P&gt;Don't. Add another BY group to your processing instead.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;What happens with the folllowing? You have shown one data set, but reference two data sets.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;

proc sort data=Sumnum101; by group age5; run;
proc sort data=Sumpop101; by group age5; run;

data numpop101; 
merge Sumnum101 Sumpop101; by group age5; 
if age5=. then delete;
crate=(count/est)*100000;
if age5=1 then weight=0.25773;
         else if age5=2 then weight=0.09561;
         else if age5=3 then weight=0.29819;
         else if age5=4 then weight=0.22208;
         else if age5=5 then weight=0.12639;
/*Adjusted Rate*/
arate = crate*weight; 
run; 


proc means data = numpop away; 
class group;
 var arate; 
 output out=ADJRATE sum=; 
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Fri, 30 Dec 2016 18:59:39 GMT</pubDate>
    <dc:creator>Reeza</dc:creator>
    <dc:date>2016-12-30T18:59:39Z</dc:date>
    <item>
      <title>SAS Macro Repeat Programs</title>
      <link>https://communities.sas.com/t5/SAS-Programming/SAS-Macro-Repeat-Programs/m-p/321778#M71115</link>
      <description>&lt;P&gt;Hi everyone,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have data that I need to subset 40 times. Instead of running the same 30 lines of code 40 times, I imagine this is where a macro would be useful. But I'm not quite sure where to start. I need the macro to subset the groups sequentally.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This is the code that I would like to repeat 40 times and some sample data:&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Group&lt;/TD&gt;&lt;TD&gt;count&lt;/TD&gt;&lt;TD&gt;est&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;101&lt;/TD&gt;&lt;TD&gt;32&lt;/TD&gt;&lt;TD&gt;5000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;102&lt;/TD&gt;&lt;TD&gt;170&lt;/TD&gt;&lt;TD&gt;6000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;103&lt;/TD&gt;&lt;TD&gt;288&lt;/TD&gt;&lt;TD&gt;7000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;104&lt;/TD&gt;&lt;TD&gt;267&lt;/TD&gt;&lt;TD&gt;8000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;105&lt;/TD&gt;&lt;TD&gt;321&lt;/TD&gt;&lt;TD&gt;5000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;106&lt;/TD&gt;&lt;TD&gt;332&lt;/TD&gt;&lt;TD&gt;6000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;107&lt;/TD&gt;&lt;TD&gt;214&lt;/TD&gt;&lt;TD&gt;7000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;201&lt;/TD&gt;&lt;TD&gt;33&lt;/TD&gt;&lt;TD&gt;8000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;202&lt;/TD&gt;&lt;TD&gt;63&lt;/TD&gt;&lt;TD&gt;5000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;203&lt;/TD&gt;&lt;TD&gt;326&lt;/TD&gt;&lt;TD&gt;6000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;204&lt;/TD&gt;&lt;TD&gt;202&lt;/TD&gt;&lt;TD&gt;7000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;205&lt;/TD&gt;&lt;TD&gt;73&lt;/TD&gt;&lt;TD&gt;8000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;206&lt;/TD&gt;&lt;TD&gt;63&lt;/TD&gt;&lt;TD&gt;5000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;207&lt;/TD&gt;&lt;TD&gt;215&lt;/TD&gt;&lt;TD&gt;6000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;208&lt;/TD&gt;&lt;TD&gt;85&lt;/TD&gt;&lt;TD&gt;7000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;209&lt;/TD&gt;&lt;TD&gt;53&lt;/TD&gt;&lt;TD&gt;8000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;210&lt;/TD&gt;&lt;TD&gt;97&lt;/TD&gt;&lt;TD&gt;5000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;211&lt;/TD&gt;&lt;TD&gt;233&lt;/TD&gt;&lt;TD&gt;6000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;301&lt;/TD&gt;&lt;TD&gt;160&lt;/TD&gt;&lt;TD&gt;7000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;302&lt;/TD&gt;&lt;TD&gt;148&lt;/TD&gt;&lt;TD&gt;8000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;303&lt;/TD&gt;&lt;TD&gt;127&lt;/TD&gt;&lt;TD&gt;5000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;304&lt;/TD&gt;&lt;TD&gt;36&lt;/TD&gt;&lt;TD&gt;6000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;305&lt;/TD&gt;&lt;TD&gt;15&lt;/TD&gt;&lt;TD&gt;7000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;306&lt;/TD&gt;&lt;TD&gt;30&lt;/TD&gt;&lt;TD&gt;8000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;307&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;TD&gt;5000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;308&lt;/TD&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;TD&gt;6000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;309&lt;/TD&gt;&lt;TD&gt;52&lt;/TD&gt;&lt;TD&gt;7000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;310&lt;/TD&gt;&lt;TD&gt;11&lt;/TD&gt;&lt;TD&gt;8000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;401&lt;/TD&gt;&lt;TD&gt;65&lt;/TD&gt;&lt;TD&gt;5000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;402&lt;/TD&gt;&lt;TD&gt;229&lt;/TD&gt;&lt;TD&gt;6000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;403&lt;/TD&gt;&lt;TD&gt;31&lt;/TD&gt;&lt;TD&gt;7000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;404&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;8000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;405&lt;/TD&gt;&lt;TD&gt;76&lt;/TD&gt;&lt;TD&gt;5000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;406&lt;/TD&gt;&lt;TD&gt;15&lt;/TD&gt;&lt;TD&gt;6000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;407&lt;/TD&gt;&lt;TD&gt;114&lt;/TD&gt;&lt;TD&gt;7000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;408&lt;/TD&gt;&lt;TD&gt;166&lt;/TD&gt;&lt;TD&gt;8000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;409&lt;/TD&gt;&lt;TD&gt;60&lt;/TD&gt;&lt;TD&gt;5000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;410&lt;/TD&gt;&lt;TD&gt;97&lt;/TD&gt;&lt;TD&gt;6000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;501&lt;/TD&gt;&lt;TD&gt;68&lt;/TD&gt;&lt;TD&gt;7000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;502&lt;/TD&gt;&lt;TD&gt;76&lt;/TD&gt;&lt;TD&gt;8000&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;/*Subset group 101*/
 data Sumnum101; set sumnum;
 if group=101;
run;

 data Sumpop101; set sumpop;
 if group=101;
run;

proc sort data=Sumnum101; by age5; run;
proc sort data=Sumpop101; by age5; run;

data numpop101; 
merge Sumnum101 Sumpop101; by age5; 
if age5=. then delete;
crate=(count/est)*100000;
if age5=1 then weight=0.25773;
         else if age5=2 then weight=0.09561;
         else if age5=3 then weight=0.29819;
         else if age5=4 then weight=0.22208;
         else if age5=5 then weight=0.12639;
/*Adjusted Rate*/
arate = crate*weight; 
run; 


proc means data = numpop101; 
 var arate; 
 output out=ADJRATE sum=; run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Essentally, I'd like the group variable to be the suffix to each dataset name and the grouping/subset variable.&lt;/P&gt;</description>
      <pubDate>Fri, 30 Dec 2016 18:53:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/SAS-Macro-Repeat-Programs/m-p/321778#M71115</guid>
      <dc:creator>hwangnyc</dc:creator>
      <dc:date>2016-12-30T18:53:37Z</dc:date>
    </item>
    <item>
      <title>Re: SAS Macro Repeat Programs</title>
      <link>https://communities.sas.com/t5/SAS-Programming/SAS-Macro-Repeat-Programs/m-p/321780#M71116</link>
      <description>&lt;P&gt;Don't. Add another BY group to your processing instead.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;What happens with the folllowing? You have shown one data set, but reference two data sets.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;

proc sort data=Sumnum101; by group age5; run;
proc sort data=Sumpop101; by group age5; run;

data numpop101; 
merge Sumnum101 Sumpop101; by group age5; 
if age5=. then delete;
crate=(count/est)*100000;
if age5=1 then weight=0.25773;
         else if age5=2 then weight=0.09561;
         else if age5=3 then weight=0.29819;
         else if age5=4 then weight=0.22208;
         else if age5=5 then weight=0.12639;
/*Adjusted Rate*/
arate = crate*weight; 
run; 


proc means data = numpop away; 
class group;
 var arate; 
 output out=ADJRATE sum=; 
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 30 Dec 2016 18:59:39 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/SAS-Macro-Repeat-Programs/m-p/321780#M71116</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2016-12-30T18:59:39Z</dc:date>
    </item>
  </channel>
</rss>

