<?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: Populating blank cells with previous date in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/Populating-blank-cells-with-previous-date/m-p/682209#M79493</link>
    <description>Thank you so much for the explanation. this solution worked perfectly as well &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;</description>
    <pubDate>Tue, 08 Sep 2020 11:44:25 GMT</pubDate>
    <dc:creator>TheNovice</dc:creator>
    <dc:date>2020-09-08T11:44:25Z</dc:date>
    <item>
      <title>Populating blank cells with previous date</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Populating-blank-cells-with-previous-date/m-p/681695#M79467</link>
      <description>&lt;P&gt;I have been given a dataset where the data columns are all blank except for the first record like below:&lt;/P&gt;&lt;P&gt;The dataset is huge so i need to do this efficiently.&amp;nbsp; I need the output where the blank dates will populate with the first date until the next date starts and so on. The list is already sorted by the dates.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I tried the following:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT face="Verdana,Arial,Helvetica,sans-serif"&gt;data want;&lt;BR /&gt;&amp;nbsp;set test;&lt;BR /&gt;&amp;nbsp;format newdate date9.;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; retain lag_date;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lag_date = cal_date;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if flag =1 then newdate = lag_date;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; drop lag_date;&lt;BR /&gt;run;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;appreciate any corrections&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Cal Date&lt;/TD&gt;&lt;TD&gt;Resource Name&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/02/2019&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/03/2019&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;to&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Cal Date&lt;/TD&gt;&lt;TD&gt;Resource Name&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/02/2019&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/02/2019&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/02/2019&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/03/2019&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Fri, 04 Sep 2020 17:01:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Populating-blank-cells-with-previous-date/m-p/681695#M79467</guid>
      <dc:creator>TheNovice</dc:creator>
      <dc:date>2020-09-04T17:01:05Z</dc:date>
    </item>
    <item>
      <title>Re: Populating blank cells with previous date</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Populating-blank-cells-with-previous-date/m-p/681751#M79468</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/248692"&gt;@TheNovice&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;I have been given a dataset where the data columns are all blank except for the first record like below:&lt;/P&gt;
&lt;P&gt;The dataset is huge so i need to do this efficiently.&amp;nbsp; I need the output where the blank dates will populate with the first date until the next date starts and so on. The list is already sorted by the dates.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I tried the following:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Verdana,Arial,Helvetica,sans-serif"&gt;data want;&lt;BR /&gt;&amp;nbsp;set test;&lt;BR /&gt;&amp;nbsp;format newdate date9.;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; retain lag_date;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lag_date = cal_date;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if flag =1 then newdate = lag_date;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; drop lag_date;&lt;BR /&gt;run;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;appreciate any corrections&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;Cal Date&lt;/TD&gt;
&lt;TD&gt;Resource Name&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;01/02/2019&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;01/03/2019&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;to&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;Cal Date&lt;/TD&gt;
&lt;TD&gt;Resource Name&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;01/02/2019&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;01/02/2019&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;01/02/2019&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;01/03/2019&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Retain plus a pair of coalesce functions solves this problem:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  input Cal_Date :mmddyy10.	Resource_Name :$1. ;
  format cal_date date9. ;
datalines;
01/02/2019	B
.	B
.	B
01/03/2019	B
run;

data want (drop=_:);
  set have;
  retain _cd;
  _cd=coalesce(cal_date,_cd);
  cal_date=coalesce(cal_date,_cd);
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;The retain _cd is the way to carry a value to future observations.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The coalesce function says to take the left-most non-missing value.&amp;nbsp; So the "trick" is to put the cal_date value into the retained _CD variable &lt;EM&gt;&lt;STRONG&gt;if cal_date is not missing&lt;/STRONG&gt;&lt;/EM&gt;.&amp;nbsp;&amp;nbsp; Then cal_date keeps its current value only if it is non-missing, otherwise the (carried forward) non-missing _CD.&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;</description>
      <pubDate>Fri, 04 Sep 2020 20:48:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Populating-blank-cells-with-previous-date/m-p/681751#M79468</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2020-09-04T20:48:41Z</dc:date>
    </item>
    <item>
      <title>Re: Populating blank cells with previous date</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Populating-blank-cells-with-previous-date/m-p/682209#M79493</link>
      <description>Thank you so much for the explanation. this solution worked perfectly as well &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;</description>
      <pubDate>Tue, 08 Sep 2020 11:44:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Populating-blank-cells-with-previous-date/m-p/682209#M79493</guid>
      <dc:creator>TheNovice</dc:creator>
      <dc:date>2020-09-08T11:44:25Z</dc:date>
    </item>
  </channel>
</rss>

