<?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: Counting days over yearly periods - using DO TO? in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/Counting-days-over-yearly-periods-using-DO-TO/m-p/103609#M28989</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks so much for all your replies. I just modified the code and it worked beautifully, simple and elegant.&lt;/P&gt;&lt;P&gt;As to the mathematical calculation, Ksharp you are right. It's generally calculated as 46 days for 4/15 - 3/01. But in our particular setting, we count check in today and check out tomorrow as staying for 1 day, not 2 days. That's why the total days are just date2 - date1 without adding an extra day. Again many thanks to both of you.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 20 Dec 2012 00:13:55 GMT</pubDate>
    <dc:creator>Solph</dc:creator>
    <dc:date>2012-12-20T00:13:55Z</dc:date>
    <item>
      <title>Counting days over yearly periods - using DO TO?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Counting-days-over-yearly-periods-using-DO-TO/m-p/103602#M28982</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I've a data step question. Any help is appreciated. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Basically I've a dataset with ID, entry date and exit date which can last as short as several days up to several years, and it can cut across two year points. What I like to do is allocate the days into yearly periods (say 5 days in year 1, 365 in year 2 and 100 days in year 3, for a total of 470 days). For the yearly period, I'd like to try April 1-March 31 as the cycle - I call it fiscal year. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Say I've days from &lt;SPAN style="text-decoration: underline;"&gt;May 1 to May 9, 2008&lt;/SPAN&gt;, then it's 8 days for 2008. If I've &lt;SPAN style="text-decoration: underline;"&gt;March 1 to April 15 for 2008 (total 45 days)&lt;/SPAN&gt;, then&amp;nbsp; I've 30 days for 2007 (31-1) and 15 for 2008 (I can't use 15 minus 1 because it's be short of 1 day. It's fine if it's 31 days for 2007 and 14 days for 2008 as long as the total is still 45 days).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I tried the stupidest way as follows doing it by single year. But I ran into problems.&lt;/P&gt;&lt;P&gt;1. I tried to use macro but it didn't take yr1 and yr2 in the date condition (e.g. "31mar&amp;amp;yr2." "01apr&amp;amp;yr1.".&lt;/P&gt;&lt;P&gt;2. Most of all, the END-Start+1 for each year will give an extra day when I sum up all day variables for an ID.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; To get around it I could tell SAS to find the variable that has the first days value and subtract 1 from it. But how do I do it?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Someone gave me an idea about subtracting the days for partial year (the beginning or ending of the year or both) and leave everything in between as 365 or 366 days, etc. But it doesn't seem feasible.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I thought I could use DO startyear TO endyear (along with function like year(intnx("YEAR.4",startdate,0)) to get around with the fiscal year). But how do I tell SAS to break the days by specific dates (say March 31 of each year). (If it's by every 365 days it's be earlier)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here are the data and my clumsy SAS code. The desired output is at the end. BTW, if the exit date is missing, I set to Mar 31 of 2012 as its the end of the study period.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Many thanks.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data test; &lt;/P&gt;&lt;P&gt;format id best. entrydate exitdate yymmdd10.;&lt;/P&gt;&lt;P&gt;input id @3 entrydate yymmdd10. @14&amp;nbsp; exitdate yymmdd10.;&lt;/P&gt;&lt;P&gt;datalines;&lt;/P&gt;&lt;P&gt;1 2010-09-22&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;2 2008-09-22 2008-10-03&lt;/P&gt;&lt;P&gt;3 2007-03-19 2011-12-14&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;proc print; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; keep id entrydate exitdate start end days:; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set test ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; format start end yymmdd10.;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If entrydate &amp;lt; '1Apr2007'd and (exitdate GE '01Apr2006'd or exitdate = .) then do;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If exitdate = . then exitdate2 = '31Mar2007'd;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; start = MAX('01Apr2006'd, entrydate);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end = MIN(exitdate, '31Mar2007'd);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; days2006=end-start+1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If entrydate &amp;lt; '1Apr2008'd and (exitdate GE '01Apr2007'd or exitdate = .) then do;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If exitdate = . then exitdate2 = '31Mar2008'd;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; start = MAX('01Apr2007'd, entrydate);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end = MIN(exitdate, '31Mar2008'd);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; days2007=end-start+1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If entrydate &amp;lt; '1Apr2009'd and (exitdate GE '01Apr2008'd or exitdate = .) then do;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If exitdate = . then exitdate2 = '31Mar2009'd;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; start = MAX('01Apr2008'd, entrydate);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end = MIN(exitdate, '31Mar2009'd);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; days2008=end-start+1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If entrydate &amp;lt; '1Apr2010'd and (exitdate GE '01Apr2009'd or exitdate = .) then do;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If exitdate = . then exitdate2 = '31Mar2010'd;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; start = MAX('01Apr2009'd, entrydate);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end = MIN(exitdate, '31Mar2010'd);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; days2009=end-start+1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If entrydate &amp;lt; '1Apr2011'd and (exitdate GE '01Apr2010'd or exitdate = .) then do;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If exitdate = . then exitdate2 = '31Mar2011'd;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; start = MAX('01Apr2010'd, entrydate);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end = MIN(exitdate, '31Mar2011'd);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; days2010=end-start+1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If entrydate &amp;lt; '1Apr2012'd and (exitdate GE '01Apr2011'd or exitdate = .) then do;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If exitdate = . then exitdate2 = '31Mar2012'd;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; start = MAX('01Apr2011'd, entrydate);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end = MIN(exitdate, '31Mar2012'd);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; days2011=end-start+1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;proc print; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Actual output&lt;/P&gt;&lt;P&gt;ID&amp;nbsp;&amp;nbsp;&amp;nbsp; Entrydate&amp;nbsp;&amp;nbsp;&amp;nbsp; Exitdate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FY2006&amp;nbsp; Fy2007&amp;nbsp; FY2008&amp;nbsp; FY2009&amp;nbsp; FY2010 FY2011&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp; 2010-09-22&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 191&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 366&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp; 2008-09-22&amp;nbsp;&amp;nbsp;&amp;nbsp; 2008-10-03&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 12&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp; 2007-03-19&amp;nbsp;&amp;nbsp;&amp;nbsp; 2011-12-14&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 13&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 366&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 365&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 365&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 365&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 258&lt;/P&gt;&lt;P&gt;*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Desired output - I throw in LOS, just for reference and if exit date is missing, I set at Mar 31 2012:&lt;/P&gt;&lt;P&gt;ID&amp;nbsp;&amp;nbsp;&amp;nbsp; Entrydate&amp;nbsp;&amp;nbsp;&amp;nbsp; Exitdate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LOS&amp;nbsp; FY2006&amp;nbsp; Fy2007&amp;nbsp; FY2008&amp;nbsp; FY2009&amp;nbsp; FY2010 FY2011&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp; 2010-09-22&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 566&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 190&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 366&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp; 2008-09-22&amp;nbsp;&amp;nbsp;&amp;nbsp; 2008-10-03&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 11&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp; 2007-03-19&amp;nbsp;&amp;nbsp;&amp;nbsp; 2011-12-14&amp;nbsp;&amp;nbsp;&amp;nbsp; 1731&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 12&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 366&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 365&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 365&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 365&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 258&lt;/P&gt;&lt;P&gt;*/&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 18 Dec 2012 22:52:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Counting-days-over-yearly-periods-using-DO-TO/m-p/103602#M28982</guid>
      <dc:creator>Solph</dc:creator>
      <dc:date>2012-12-18T22:52:12Z</dc:date>
    </item>
    <item>
      <title>Re: Counting days over yearly periods - using DO TO?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Counting-days-over-yearly-periods-using-DO-TO/m-p/103603#M28983</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Will your years always range between 2006 and 2011?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 18 Dec 2012 23:06:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Counting-days-over-yearly-periods-using-DO-TO/m-p/103603#M28983</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2012-12-18T23:06:45Z</dc:date>
    </item>
    <item>
      <title>Re: Counting days over yearly periods - using DO TO?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Counting-days-over-yearly-periods-using-DO-TO/m-p/103604#M28984</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;No. The entry and exit date can be long before or after these years. I'm actually interested in 2002-2011 (that is Apr 1, 2002 to Mar 31, 2011).&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 18 Dec 2012 23:11:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Counting-days-over-yearly-periods-using-DO-TO/m-p/103604#M28984</guid>
      <dc:creator>Solph</dc:creator>
      <dc:date>2012-12-18T23:11:03Z</dc:date>
    </item>
    <item>
      <title>Re: Counting days over yearly periods - using DO TO?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Counting-days-over-yearly-periods-using-DO-TO/m-p/103605#M28985</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Well...particularly inelegant as well but flexible....&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data test;&lt;/P&gt;&lt;P&gt;format id best. entrydate exitdate yymmdd10.;&lt;/P&gt;&lt;P&gt;input id @3 entrydate yymmdd10. @14&amp;nbsp; exitdate yymmdd10.;&lt;/P&gt;&lt;P&gt;datalines;&lt;/P&gt;&lt;P&gt;1 2010-09-22&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;2 2008-09-22 2008-10-03&lt;/P&gt;&lt;P&gt;3 2007-03-19 2011-12-14&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data expand;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set test;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if exitdate =. then exitdate='31mar2012'd;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; do date=entrydate to exitdate;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *calculate fiscal year;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fiscal_year=ifn(qtr(date)&amp;lt;1, year(date)+1, year(date));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sql;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; create table part1 as&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select id, entrydate, exitdate, fiscal_year, count(*) as num_days&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from expand&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; group by id, entrydate, exitdate, fiscal_year;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc transpose data=part1 out=part2 prefix=FY;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; by id entrydate exitdate;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; id fiscal_year;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var num_days;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 18 Dec 2012 23:16:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Counting-days-over-yearly-periods-using-DO-TO/m-p/103605#M28985</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2012-12-18T23:16:08Z</dc:date>
    </item>
    <item>
      <title>Re: Counting days over yearly periods - using DO TO?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Counting-days-over-yearly-periods-using-DO-TO/m-p/103606#M28986</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks a lot. It's one clever to do it, except the sum seem to mess up. The output numbers aren't quite right.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE border="0" cellpadding="0" cellspacing="0" style="width: 674px;"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD class="xl66" height="20" width="49"&gt;id&lt;/TD&gt;&lt;TD class="xl66" width="75"&gt;entrydate&lt;/TD&gt;&lt;TD class="xl66" width="75"&gt;exitdate&lt;/TD&gt;&lt;TD class="xl66" width="91"&gt;_NAME_&lt;/TD&gt;&lt;TD class="xl69" width="64"&gt;FY2007&lt;/TD&gt;&lt;TD class="xl69" width="64"&gt;FY2008&lt;/TD&gt;&lt;TD class="xl69" width="64"&gt;FY2009&lt;/TD&gt;&lt;TD class="xl69" width="64"&gt;FY2010&lt;/TD&gt;&lt;TD class="xl69" width="64"&gt;FY2011&lt;/TD&gt;&lt;TD class="xl69" width="64"&gt;FY2012&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" class="xl67" height="20" width="49"&gt;1&lt;/TD&gt;&lt;TD align="right" class="xl68" width="75"&gt;22/09/2010&lt;/TD&gt;&lt;TD align="right" class="xl68" width="75"&gt;31/03/2012&lt;/TD&gt;&lt;TD class="xl67" width="91"&gt;num_days&lt;/TD&gt;&lt;TD class="xl70" width="64"&gt;.&lt;/TD&gt;&lt;TD class="xl70" width="64"&gt;.&lt;/TD&gt;&lt;TD class="xl70" width="64"&gt;.&lt;/TD&gt;&lt;TD class="xl70" width="64"&gt;101&lt;/TD&gt;&lt;TD class="xl70" width="64"&gt;365&lt;/TD&gt;&lt;TD class="xl70" width="64"&gt;91&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" class="xl67" height="20" width="49"&gt;2&lt;/TD&gt;&lt;TD align="right" class="xl68" width="75"&gt;22/09/2008&lt;/TD&gt;&lt;TD align="right" class="xl68" width="75"&gt;03/10/2008&lt;/TD&gt;&lt;TD class="xl67" width="91"&gt;num_days&lt;/TD&gt;&lt;TD class="xl70" width="64"&gt;.&lt;/TD&gt;&lt;TD class="xl70" width="64"&gt;12&lt;/TD&gt;&lt;TD class="xl70" width="64"&gt;.&lt;/TD&gt;&lt;TD class="xl70" width="64"&gt;.&lt;/TD&gt;&lt;TD class="xl70" width="64"&gt;.&lt;/TD&gt;&lt;TD class="xl70" width="64"&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" class="xl67" height="20" width="49"&gt;3&lt;/TD&gt;&lt;TD align="right" class="xl68" width="75"&gt;19/03/2007&lt;/TD&gt;&lt;TD align="right" class="xl68" width="75"&gt;14/12/2011&lt;/TD&gt;&lt;TD class="xl67" width="91"&gt;num_days&lt;/TD&gt;&lt;TD class="xl70" width="64"&gt;288&lt;/TD&gt;&lt;TD class="xl70" width="64"&gt;366&lt;/TD&gt;&lt;TD class="xl70" width="64"&gt;365&lt;/TD&gt;&lt;TD class="xl70" width="64"&gt;365&lt;/TD&gt;&lt;TD class="xl70" width="64"&gt;348&lt;/TD&gt;&lt;TD class="xl70" width="64"&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Need to be&lt;/P&gt;&lt;TABLE border="0" cellpadding="0" cellspacing="0" width="674"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD class="xl66" height="20" width="49"&gt;id&lt;/TD&gt;&lt;TD class="xl66" width="75"&gt;entrydate&lt;/TD&gt;&lt;TD class="xl66" width="75"&gt;exitdate&lt;/TD&gt;&lt;TD class="xl66" width="91"&gt;_NAME_&lt;/TD&gt;&lt;TD class="xl66" width="64"&gt;FY2006&lt;/TD&gt;&lt;TD class="xl66" width="64"&gt;FY2007&lt;/TD&gt;&lt;TD class="xl66" width="64"&gt;FY2008&lt;/TD&gt;&lt;TD class="xl66" width="64"&gt;FY2009&lt;/TD&gt;&lt;TD class="xl66" width="64"&gt;FY2010&lt;/TD&gt;&lt;TD class="xl66" width="64"&gt;FY2011&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" class="xl67" height="20" width="49"&gt;1&lt;/TD&gt;&lt;TD align="right" class="xl68" width="75"&gt;22/09/2010&lt;/TD&gt;&lt;TD align="right" class="xl68" width="75"&gt;31/03/2012&lt;/TD&gt;&lt;TD class="xl67" width="91"&gt;num_days&lt;/TD&gt;&lt;TD class="xl69" width="64"&gt;.&lt;/TD&gt;&lt;TD class="xl69" width="64"&gt;.&lt;/TD&gt;&lt;TD class="xl69" width="64"&gt;.&lt;/TD&gt;&lt;TD class="xl69" width="64"&gt;.&lt;/TD&gt;&lt;TD class="xl69" width="64"&gt;190&lt;/TD&gt;&lt;TD class="xl69" width="64"&gt;366&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" class="xl67" height="20" width="49"&gt;2&lt;/TD&gt;&lt;TD align="right" class="xl68" width="75"&gt;22/09/2008&lt;/TD&gt;&lt;TD align="right" class="xl68" width="75"&gt;03/10/2008&lt;/TD&gt;&lt;TD class="xl67" width="91"&gt;num_days&lt;/TD&gt;&lt;TD class="xl69" width="64"&gt;.&lt;/TD&gt;&lt;TD class="xl69" width="64"&gt;.&lt;/TD&gt;&lt;TD class="xl69" width="64"&gt;11&lt;/TD&gt;&lt;TD class="xl69" width="64"&gt;.&lt;/TD&gt;&lt;TD class="xl69" width="64"&gt;.&lt;/TD&gt;&lt;TD class="xl69" width="64"&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" class="xl67" height="20" width="49"&gt;3&lt;/TD&gt;&lt;TD align="right" class="xl68" width="75"&gt;19/03/2007&lt;/TD&gt;&lt;TD align="right" class="xl68" width="75"&gt;14/12/2011&lt;/TD&gt;&lt;TD class="xl67" width="91"&gt;num_days&lt;/TD&gt;&lt;TD class="xl69" width="64"&gt;12&lt;/TD&gt;&lt;TD class="xl69" width="64"&gt;366&lt;/TD&gt;&lt;TD class="xl69" width="64"&gt;365&lt;/TD&gt;&lt;TD class="xl69" width="64"&gt;365&lt;/TD&gt;&lt;TD class="xl69" width="64"&gt;365&lt;/TD&gt;&lt;TD class="xl69" width="64"&gt;258&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;probably due to fiscal_year=ifn(qtr(date)&amp;lt;1, year(date)+1, year(date))&lt;/P&gt;&lt;P&gt;I tried the following; it's fine except for the first year it is over counting by 1 day.&lt;/P&gt;&lt;P&gt;fiscal_year=year(intnx("year.4",date,0));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;(The other problem with this is if I've a huge dataset like over 500,000 cases I might run into problems. But it's better than nothing if the overcounting issue could be fixed).&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 18 Dec 2012 23:51:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Counting-days-over-yearly-periods-using-DO-TO/m-p/103606#M28986</guid>
      <dc:creator>Solph</dc:creator>
      <dc:date>2012-12-18T23:51:42Z</dc:date>
    </item>
    <item>
      <title>Re: Counting days over yearly periods - using DO TO?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Counting-days-over-yearly-periods-using-DO-TO/m-p/103607#M28987</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;ifn(qtr(date)=1, year(date), year(date)+1)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;Should be =1 to one actually, i.e. anything in the first quarter gets the previous fiscal year.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;Basically if its the first 3 months then the fiscal year would be the previous year, else it would be the next year.&amp;nbsp; &lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 19 Dec 2012 01:17:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Counting-days-over-yearly-periods-using-DO-TO/m-p/103607#M28987</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2012-12-19T01:17:24Z</dc:date>
    </item>
    <item>
      <title>Re: Counting days over yearly periods - using DO TO?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Counting-days-over-yearly-periods-using-DO-TO/m-p/103608#M28988</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Actually there is a mathmatics problem in your logic .&lt;/P&gt;&lt;P&gt;2008/04/15 - 2008/03/01 = 45 days . but in reality, there is 46 days you should add 2008/03/01 too.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;data test;
format id best. entrydate exitdate yymmdd10.;
input id @3 entrydate yymmdd10. @14&amp;nbsp; exitdate yymmdd10.;
datalines;
1 2010-09-22&amp;nbsp; 
2 2008-09-22 2008-10-03
3 2007-03-19 2011-12-14
;
run;


data expand;
&amp;nbsp;&amp;nbsp;&amp;nbsp; set test;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if exitdate =. then exitdate='31mar2012'd;
run;
data temp;
 set expand;
 do temp=entrydate+1 to exitdate;
&amp;nbsp; year=ifn(month(temp) lt 4 ,year(temp)-1,year(temp));
&amp;nbsp; output;
 end;
 keep id year;
run;

proc sql noprint;
create table x as 
 select *,count(*) as count from temp group by id,year;
select distinct cats('x(where=(year=',year,') rename=(count=F',year,'))') into : list separated by ' ' from x;
quit;
data want;
 merge expand&amp;nbsp; &amp;amp;list ;
 by id;
 drop year;
run;



&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Ksharp&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 19 Dec 2012 03:04:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Counting-days-over-yearly-periods-using-DO-TO/m-p/103608#M28988</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2012-12-19T03:04:59Z</dc:date>
    </item>
    <item>
      <title>Re: Counting days over yearly periods - using DO TO?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Counting-days-over-yearly-periods-using-DO-TO/m-p/103609#M28989</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks so much for all your replies. I just modified the code and it worked beautifully, simple and elegant.&lt;/P&gt;&lt;P&gt;As to the mathematical calculation, Ksharp you are right. It's generally calculated as 46 days for 4/15 - 3/01. But in our particular setting, we count check in today and check out tomorrow as staying for 1 day, not 2 days. That's why the total days are just date2 - date1 without adding an extra day. Again many thanks to both of you.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 20 Dec 2012 00:13:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Counting-days-over-yearly-periods-using-DO-TO/m-p/103609#M28989</guid>
      <dc:creator>Solph</dc:creator>
      <dc:date>2012-12-20T00:13:55Z</dc:date>
    </item>
  </channel>
</rss>

