<?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: Rate calculations using month rows in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Rate-calculations-using-month-rows/m-p/626118#M184627</link>
    <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/154786"&gt;@PetePatel&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have added two statements in the program to take into account the year:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Best,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
	infile datalines dlm="09"x;
	input month:monyy. numerator denominator;
	format month monyy.; 
	datalines;
Jan-16	10	200
Feb-16	15	300
Mar-16	20	300
Apr-16	10	150
May-16	5	100
Jun-16	30	350
Jul-16	20	400
Aug-16	25	350
Sep-16	15	200
Oct-16	40	450
Nov-16	10	200
Dec-16	40	400
Jan-17	40	450
Feb-17	10	200
Mar-17	40	400
;
run;
 
data have_q;
	set have;
	Year = year(month);
	Quarter = qtr(month);
run;

data want (keep= Quarter_end Rate);
	set have_q;
	by Year Quarter;
	format month monyy. Rate percent8.1;
	retain numerator_sum;
	retain denominator_sum;
	if first.Quarter then do;
		numerator_sum=0;
		denominator_sum=0;
	end;
	numerator_sum + numerator;
	if first.Quarter then denominator_sum + denominator;
	Rate = numerator_sum / denominator_sum;
	if last.Quarter then output;
	rename month=Quarter_end;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Thu, 20 Feb 2020 12:03:26 GMT</pubDate>
    <dc:creator>ed_sas_member</dc:creator>
    <dc:date>2020-02-20T12:03:26Z</dc:date>
    <item>
      <title>Rate calculations using month rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Rate-calculations-using-month-rows/m-p/626095#M184614</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have a large dataset (20 year period) in the following format:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;month&lt;/TD&gt;&lt;TD&gt;numerator&lt;/TD&gt;&lt;TD&gt;denominator&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Jan-16&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;TD&gt;200&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Feb-16&lt;/TD&gt;&lt;TD&gt;15&lt;/TD&gt;&lt;TD&gt;300&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Mar-16&lt;/TD&gt;&lt;TD&gt;20&lt;/TD&gt;&lt;TD&gt;300&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Apr-16&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;TD&gt;150&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;May-16&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Jun-16&lt;/TD&gt;&lt;TD&gt;30&lt;/TD&gt;&lt;TD&gt;350&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Jul-16&lt;/TD&gt;&lt;TD&gt;20&lt;/TD&gt;&lt;TD&gt;400&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Aug-16&lt;/TD&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;TD&gt;350&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Sep-16&lt;/TD&gt;&lt;TD&gt;15&lt;/TD&gt;&lt;TD&gt;200&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Oct-16&lt;/TD&gt;&lt;TD&gt;40&lt;/TD&gt;&lt;TD&gt;450&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Nov-16&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;TD&gt;200&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Dec-16&lt;/TD&gt;&lt;TD&gt;40&lt;/TD&gt;&lt;TD&gt;400&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I need to transform to a quarterly view in the following way.&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;Quarter_end&lt;/TD&gt;&lt;TD&gt;Rate&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Mar-16&lt;/TD&gt;&lt;TD&gt;22.5%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Jun-16&lt;/TD&gt;&lt;TD&gt;30.0%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Sep-16&lt;/TD&gt;&lt;TD&gt;15.0%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Dec-16&lt;/TD&gt;&lt;TD&gt;20.0%&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Mar-16 (quarter end) = sum of numerator in Jan-16, Feb-16 and Mar-16 divided by denominator in Jan-16 (quarter start)&lt;BR /&gt;= (10+15+20) / 200&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The logic for the other quarters follow in the same way.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am currently doing this in Excel but it can get messy.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Is there a more efficient way of doing this in SAS?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in advance&lt;/P&gt;</description>
      <pubDate>Thu, 20 Feb 2020 10:57:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Rate-calculations-using-month-rows/m-p/626095#M184614</guid>
      <dc:creator>PetePatel</dc:creator>
      <dc:date>2020-02-20T10:57:34Z</dc:date>
    </item>
    <item>
      <title>Re: Rate calculations using month rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Rate-calculations-using-month-rows/m-p/626098#M184615</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/154786"&gt;@PetePatel&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here is one approach to achieve this, using a data step:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
	infile datalines dlm="09"x;
	input month:monyy. numerator denominator;
	format month monyy.; 
	datalines;
Jan-16	10	200
Feb-16	15	300
Mar-16	20	300
Apr-16	10	150
May-16	5	100
Jun-16	30	350
Jul-16	20	400
Aug-16	25	350
Sep-16	15	200
Oct-16	40	450
Nov-16	10	200
Dec-16	40	400
;
run;
 
data have_q;
	set have;
	Quarter = qtr(month);
run;

data want (keep= Quarter_end Rate);
	set have_q;
	by Quarter;
	format month monyy. Rate percent8.1;
	retain numerator_sum;
	retain denominator_sum;
	if first.Quarter then do;
		numerator_sum=0;
		denominator_sum=0;
	end;
	numerator_sum + numerator;
	if first.Quarter then denominator_sum + denominator;
	Rate = numerator_sum / denominator_sum;
	if last.Quarter then output;
	rename month=Quarter_end;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 20 Feb 2020 11:11:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Rate-calculations-using-month-rows/m-p/626098#M184615</guid>
      <dc:creator>ed_sas_member</dc:creator>
      <dc:date>2020-02-20T11:11:20Z</dc:date>
    </item>
    <item>
      <title>Re: Rate calculations using month rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Rate-calculations-using-month-rows/m-p/626103#M184618</link>
      <description>&lt;P&gt;Another option could be to use a proc means:&lt;/P&gt;
&lt;P&gt;&lt;CODE class=" language-sas"&gt;&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&lt;CODE class=" language-sas"&gt;&lt;/CODE&gt;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
	infile datalines dlm="09"x;
	input month:monyy. numerator denominator;
	format month monyy.; 
	datalines;
Jan-16	10	200
Feb-16	15	300
Mar-16	20	300
Apr-16	10	150
May-16	5	100
Jun-16	30	350
Jul-16	20	400
Aug-16	25	350
Sep-16	15	200
Oct-16	40	450
Nov-16	10	200
Dec-16	40	400
;
run;
 
data have_q;
	set have;
	quarter = qtr(month);
run;

data denominator (keep=quarter denominator) last_month (keep=quarter month);
	set have_q;
	by quarter;
	if first.quarter then output denominator;
	if last.quarter then output last_month;
run;

proc means data=have_q sum noprint;
	var numerator;
	by quarter;
	output out=numerator (drop=_:) sum=sum_numerator;
run;

data want (keep= month Rate rename=(month=Quarter_end));
	merge numerator denominator last_month;
	format Rate percent8.1;
	by quarter;
	Rate = sum_numerator / denominator;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;CODE class=" language-sas"&gt;&lt;/CODE&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 20 Feb 2020 11:42:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Rate-calculations-using-month-rows/m-p/626103#M184618</guid>
      <dc:creator>ed_sas_member</dc:creator>
      <dc:date>2020-02-20T11:42:48Z</dc:date>
    </item>
    <item>
      <title>Re: Rate calculations using month rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Rate-calculations-using-month-rows/m-p/626108#M184622</link>
      <description>&lt;P&gt;Thanks Ed, this is really close.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;It works for the one year period I provided but as soon as you add in more quarters it fails.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So if I add on the below to datalines&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Jan-17 40 450&lt;BR /&gt;Feb-17 10 200&lt;BR /&gt;Mar-17 40 400&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Is there a way around this?&lt;/P&gt;</description>
      <pubDate>Thu, 20 Feb 2020 11:47:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Rate-calculations-using-month-rows/m-p/626108#M184622</guid>
      <dc:creator>PetePatel</dc:creator>
      <dc:date>2020-02-20T11:47:45Z</dc:date>
    </item>
    <item>
      <title>Re: Rate calculations using month rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Rate-calculations-using-month-rows/m-p/626112#M184624</link>
      <description>&lt;P&gt;Is this for reporting purposes or do you need a SAS data set?&lt;/P&gt;</description>
      <pubDate>Thu, 20 Feb 2020 11:51:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Rate-calculations-using-month-rows/m-p/626112#M184624</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2020-02-20T11:51:50Z</dc:date>
    </item>
    <item>
      <title>Re: Rate calculations using month rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Rate-calculations-using-month-rows/m-p/626118#M184627</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/154786"&gt;@PetePatel&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have added two statements in the program to take into account the year:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Best,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
	infile datalines dlm="09"x;
	input month:monyy. numerator denominator;
	format month monyy.; 
	datalines;
Jan-16	10	200
Feb-16	15	300
Mar-16	20	300
Apr-16	10	150
May-16	5	100
Jun-16	30	350
Jul-16	20	400
Aug-16	25	350
Sep-16	15	200
Oct-16	40	450
Nov-16	10	200
Dec-16	40	400
Jan-17	40	450
Feb-17	10	200
Mar-17	40	400
;
run;
 
data have_q;
	set have;
	Year = year(month);
	Quarter = qtr(month);
run;

data want (keep= Quarter_end Rate);
	set have_q;
	by Year Quarter;
	format month monyy. Rate percent8.1;
	retain numerator_sum;
	retain denominator_sum;
	if first.Quarter then do;
		numerator_sum=0;
		denominator_sum=0;
	end;
	numerator_sum + numerator;
	if first.Quarter then denominator_sum + denominator;
	Rate = numerator_sum / denominator_sum;
	if last.Quarter then output;
	rename month=Quarter_end;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 20 Feb 2020 12:03:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Rate-calculations-using-month-rows/m-p/626118#M184627</guid>
      <dc:creator>ed_sas_member</dc:creator>
      <dc:date>2020-02-20T12:03:26Z</dc:date>
    </item>
    <item>
      <title>Re: Rate calculations using month rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Rate-calculations-using-month-rows/m-p/626120#M184629</link>
      <description>&lt;P&gt;Same update, to take into account the year:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
	infile datalines dlm="09"x;
	input month:monyy. numerator denominator;
	format month monyy.; 
	datalines;
Jan-16	10	200
Feb-16	15	300
Mar-16	20	300
Apr-16	10	150
May-16	5	100
Jun-16	30	350
Jul-16	20	400
Aug-16	25	350
Sep-16	15	200
Oct-16	40	450
Nov-16	10	200
Dec-16	40	400
Jan-17	40	450
Feb-17	10	200
Mar-17	40	400
;
run;
 
data have_q;
	set have;
	Year = year(month);
	Quarter = qtr(month);
run;

data denominator (keep= year quarter denominator) last_month (keep=year quarter month);
	set have_q;
	by year quarter;
	if first.quarter then output denominator;
	if last.quarter then output last_month;
run;

proc means data=have_q sum noprint;
	var numerator;
	by year quarter;
	output out=numerator (drop=_:) sum=sum_numerator;
run;

data want (keep= month Rate rename=(month=Quarter_end));
	merge numerator denominator last_month;
	format Rate percent8.1;
	by year quarter;
	Rate = sum_numerator / denominator;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 20 Feb 2020 12:04:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Rate-calculations-using-month-rows/m-p/626120#M184629</guid>
      <dc:creator>ed_sas_member</dc:creator>
      <dc:date>2020-02-20T12:04:56Z</dc:date>
    </item>
    <item>
      <title>Re: Rate calculations using month rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Rate-calculations-using-month-rows/m-p/626123#M184631</link>
      <description>&lt;P&gt;Works perfectly, thank you.&lt;/P&gt;</description>
      <pubDate>Thu, 20 Feb 2020 12:14:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Rate-calculations-using-month-rows/m-p/626123#M184631</guid>
      <dc:creator>PetePatel</dc:creator>
      <dc:date>2020-02-20T12:14:48Z</dc:date>
    </item>
    <item>
      <title>Re: Rate calculations using month rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Rate-calculations-using-month-rows/m-p/626124#M184632</link>
      <description>&lt;P&gt;For reporting but required in SAS to merge onto other datasets.&lt;/P&gt;</description>
      <pubDate>Thu, 20 Feb 2020 12:16:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Rate-calculations-using-month-rows/m-p/626124#M184632</guid>
      <dc:creator>PetePatel</dc:creator>
      <dc:date>2020-02-20T12:16:47Z</dc:date>
    </item>
    <item>
      <title>Re: Rate calculations using month rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Rate-calculations-using-month-rows/m-p/626126#M184634</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/154786"&gt;@PetePatel&lt;/a&gt;&amp;nbsp; Nice to see the question has been answered in very legible terms. Good morning, Assuming your sample represents your sample and is neatly sorted by calendar month, this presents a case for nice application of groupformats akin to what we are used to in procedures. One would think, why not use a procedure, well datastep is more of a work horse than readymeals, the options plethora are staggering&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
	infile datalines ;
	input month:monyy. numerator denominator;
	format month monyy.; 
	datalines;
Jan-16	10	200
Feb-16	15	300
Mar-16	20	300
Apr-16	10	150
May-16	5	100
Jun-16	30	350
Jul-16	20	400
Aug-16	25	350
Sep-16	15	200
Oct-16	40	450
Nov-16	10	200
Dec-16	40	400
Jan-17	40	450
Feb-17	10	200
Mar-17	40	400
;
run;

data want;
 call missing(Quarter_end);
 do until(last._m);
  set have(rename=month=_m);
  by _m groupformat;
  format _m yyq6.;
  Quarter_end=_m;
  if first._m then _d=denominator;
  _n=sum(numerator,_n);
 end;
 Rate=_n/_d;
 format rate percent8.2 Quarter_end monyy7.; 
 keep Quarter_end rate;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;All the best!&lt;/P&gt;</description>
      <pubDate>Thu, 20 Feb 2020 12:55:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Rate-calculations-using-month-rows/m-p/626126#M184634</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2020-02-20T12:55:14Z</dc:date>
    </item>
    <item>
      <title>Re: Rate calculations using month rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Rate-calculations-using-month-rows/m-p/626147#M184645</link>
      <description>&lt;P&gt;Thank&amp;nbsp; you novinosrin, I didn't know you could use a groupformat in such a way.&lt;/P&gt;</description>
      <pubDate>Thu, 20 Feb 2020 13:49:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Rate-calculations-using-month-rows/m-p/626147#M184645</guid>
      <dc:creator>PetePatel</dc:creator>
      <dc:date>2020-02-20T13:49:13Z</dc:date>
    </item>
  </channel>
</rss>

