<?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: data step to fill in missing date observations in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/data-step-to-fill-in-missing-date-observations/m-p/133548#M27129</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The solution Reeza suggested will work if you know you have persons in sequential order of 1 through 10. If you don't, here's a more flexible solution that gets the list of persons from the have dataset.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt; &lt;BR /&gt;data have;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; input person day : date9. events;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; format day date9.;&lt;/P&gt;&lt;P&gt;datalines;&lt;BR /&gt;1 03jan2012 1 &lt;BR /&gt;1 15jan2012 2 &lt;BR /&gt;1 01mar2012 1 &lt;BR /&gt;2 02feb2012 3 &lt;BR /&gt;2 01mar2012 1 &lt;BR /&gt;23 28jan2012 4 &lt;BR /&gt;;&lt;BR /&gt;run;&lt;BR /&gt;proc sort data=have (keep=person) out=persons nodup;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; by person;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;data person_days;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; keep person day;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; set persons;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; format day date9.;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; do day = '01jan2012'd to '31mar2012'd;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc sql;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; create table want as&lt;BR /&gt;&amp;nbsp;&amp;nbsp; select a.person, a.day, coalesce (b.events, 0) as events&lt;BR /&gt;&amp;nbsp;&amp;nbsp; from person_days a&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; left join have b on a.person = b.person&lt;BR /&gt;&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; and a.day = b.day&lt;BR /&gt;&amp;nbsp;&amp;nbsp; ;&lt;BR /&gt;quit;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 14 Mar 2013 16:28:40 GMT</pubDate>
    <dc:creator>Scott_A_Miller</dc:creator>
    <dc:date>2013-03-14T16:28:40Z</dc:date>
    <item>
      <title>data step to fill in missing date observations</title>
      <link>https://communities.sas.com/t5/SAS-Programming/data-step-to-fill-in-missing-date-observations/m-p/133544#M27125</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have a data set that has person, day, and events. The data is sparse; there are no observations showing events=0. I want to fill it out with all of the days from 01jan2012 to 31mar2012 for each person with events=0 so that I can eventually use proc summary or a data step to create monthly and global sums by person, where I'll need to report months with zero events. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data have;&lt;/P&gt;&lt;P&gt;input person day : date9. events;&lt;/P&gt;&lt;P&gt;format day date9.;&lt;/P&gt;&lt;P&gt;datalines;&lt;/P&gt;&lt;P&gt;1 03jan2012 1 &lt;/P&gt;&lt;P&gt;1 15jan2012 2 &lt;/P&gt;&lt;P&gt;1 01mar2012 1 &lt;/P&gt;&lt;P&gt;2 02feb2012 3 &lt;/P&gt;&lt;P&gt;2 01mar2012 1&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="line-height: 1.5em; font-size: 10pt;"&gt;want:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;person day events&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;1 01jan2012 0&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;1 02jan2012 0&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;1 03jan2012 1&lt;/P&gt;&lt;P&gt;1 04jan2012 0&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;...&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;1 31mar2012 0&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;2 01jan2012 0&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;...&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;10 31mar2012 0&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;How can I use a data step to loop through all people (1 to 10) and from 01jan2012 to 31mar2012 and append the missing observations with events=0 ?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;pteranodon&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 13 Mar 2013 22:15:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/data-step-to-fill-in-missing-date-observations/m-p/133544#M27125</guid>
      <dc:creator>pteranodon</dc:creator>
      <dc:date>2013-03-13T22:15:29Z</dc:date>
    </item>
    <item>
      <title>Re: data step to fill in missing date observations</title>
      <link>https://communities.sas.com/t5/SAS-Programming/data-step-to-fill-in-missing-date-observations/m-p/133545#M27126</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I suggest creating your empty data set, Jan1-mar31 with 0 events and then merge in your actual data by date, allowing your actual data to overwrite the events.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 13 Mar 2013 22:20:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/data-step-to-fill-in-missing-date-observations/m-p/133545#M27126</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2013-03-13T22:20:50Z</dc:date>
    </item>
    <item>
      <title>Re: data step to fill in missing date observations</title>
      <link>https://communities.sas.com/t5/SAS-Programming/data-step-to-fill-in-missing-date-observations/m-p/133546#M27127</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This is by person/date but you could do the same by date only.&lt;/P&gt;&lt;P&gt;data dates;&lt;/P&gt;&lt;P&gt;do person=1 to 10;&lt;/P&gt;&lt;P&gt;do date='01Jan2012'd to '31Mar2012'd by 1;&lt;/P&gt;&lt;P&gt;event=1; output;&lt;/P&gt;&lt;P&gt;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;create table want as&lt;/P&gt;&lt;P&gt;select people, date, coalesce(b.event, a.event) as event&lt;/P&gt;&lt;P&gt;from dates a&lt;/P&gt;&lt;P&gt;left join have b&lt;/P&gt;&lt;P&gt;on a.person=b.person and a.date=b.date;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 13 Mar 2013 23:38:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/data-step-to-fill-in-missing-date-observations/m-p/133546#M27127</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2013-03-13T23:38:19Z</dc:date>
    </item>
    <item>
      <title>Re: data step to fill in missing date observations</title>
      <link>https://communities.sas.com/t5/SAS-Programming/data-step-to-fill-in-missing-date-observations/m-p/133547#M27128</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;It looks like Coalesce on (empty set) Left Join (sparse data) is what I'm looking for.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 14 Mar 2013 14:02:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/data-step-to-fill-in-missing-date-observations/m-p/133547#M27128</guid>
      <dc:creator>pteranodon</dc:creator>
      <dc:date>2013-03-14T14:02:34Z</dc:date>
    </item>
    <item>
      <title>Re: data step to fill in missing date observations</title>
      <link>https://communities.sas.com/t5/SAS-Programming/data-step-to-fill-in-missing-date-observations/m-p/133548#M27129</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The solution Reeza suggested will work if you know you have persons in sequential order of 1 through 10. If you don't, here's a more flexible solution that gets the list of persons from the have dataset.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt; &lt;BR /&gt;data have;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; input person day : date9. events;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; format day date9.;&lt;/P&gt;&lt;P&gt;datalines;&lt;BR /&gt;1 03jan2012 1 &lt;BR /&gt;1 15jan2012 2 &lt;BR /&gt;1 01mar2012 1 &lt;BR /&gt;2 02feb2012 3 &lt;BR /&gt;2 01mar2012 1 &lt;BR /&gt;23 28jan2012 4 &lt;BR /&gt;;&lt;BR /&gt;run;&lt;BR /&gt;proc sort data=have (keep=person) out=persons nodup;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; by person;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;data person_days;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; keep person day;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; set persons;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; format day date9.;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; do day = '01jan2012'd to '31mar2012'd;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc sql;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; create table want as&lt;BR /&gt;&amp;nbsp;&amp;nbsp; select a.person, a.day, coalesce (b.events, 0) as events&lt;BR /&gt;&amp;nbsp;&amp;nbsp; from person_days a&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; left join have b on a.person = b.person&lt;BR /&gt;&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; and a.day = b.day&lt;BR /&gt;&amp;nbsp;&amp;nbsp; ;&lt;BR /&gt;quit;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 14 Mar 2013 16:28:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/data-step-to-fill-in-missing-date-observations/m-p/133548#M27129</guid>
      <dc:creator>Scott_A_Miller</dc:creator>
      <dc:date>2013-03-14T16:28:40Z</dc:date>
    </item>
  </channel>
</rss>

