<?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 Fill Missing Values with Next Non-Missing Observation in ODS and Base Reporting</title>
    <link>https://communities.sas.com/t5/ODS-and-Base-Reporting/Fill-Missing-Values-with-Next-Non-Missing-Observation/m-p/42862#M5748</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;It is another method. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;data have;
&amp;nbsp; input Time_Point Missing_Values;
&amp;nbsp; cards;
1 .
2 .
3 .
4 .
5 7
6 .
7 6
8 5
9 .
10 4
11 3
12 2
13 1
;
run;
data want;
 do until(missing_values or last);
&amp;nbsp; set have end=last;
&amp;nbsp; if not missing(missing_values) then want_value=missing_values;
 end;
 do until(missing_values or _last);
&amp;nbsp; set have end=_last;
&amp;nbsp; output;
 end;
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;Ksharp&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 10 Nov 2011 02:25:43 GMT</pubDate>
    <dc:creator>Ksharp</dc:creator>
    <dc:date>2011-11-10T02:25:43Z</dc:date>
    <item>
      <title>Fill Missing Values with Next Non-Missing Observation</title>
      <link>https://communities.sas.com/t5/ODS-and-Base-Reporting/Fill-Missing-Values-with-Next-Non-Missing-Observation/m-p/42858#M5744</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I know how to use the RETAIN statement to fill in missing values with the last non-missing value, but is there a way to do it backwards?&amp;nbsp; That is, can I fill in previous missing values with the &lt;EM&gt;next &lt;/EM&gt;non-missing value?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Example - I am trying to get &amp;amp;quot;Filled Data&amp;amp;quot; from the &amp;amp;quot;Missing Values&amp;amp;quot; column:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE border="1" cellpadding="3" cellspacing="0" class="jiveBorder" style="width: 25%; border: 1px solid #000000;"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TH align="center" style="background-color: #6690bc;" valign="middle"&gt;&lt;SPAN style="color: #ffffff;"&gt;&lt;STRONG&gt;Time Point&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/TH&gt;&lt;TH align="center" style="background-color: #6690bc;" valign="middle"&gt;&lt;SPAN style="color: #ffffff;"&gt;&lt;STRONG&gt;Missing Values&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/TH&gt;&lt;TH align="center" style="background-color: #6690bc;" valign="middle"&gt;&lt;SPAN style="color: #ffffff;"&gt;&lt;STRONG&gt;Filled Data&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/TH&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;11&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;13&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 07 Nov 2011 18:04:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/ODS-and-Base-Reporting/Fill-Missing-Values-with-Next-Non-Missing-Observation/m-p/42858#M5744</guid>
      <dc:creator>djbateman</dc:creator>
      <dc:date>2011-11-07T18:04:42Z</dc:date>
    </item>
    <item>
      <title>Fill Missing Values with Next Non-Missing Observation</title>
      <link>https://communities.sas.com/t5/ODS-and-Base-Reporting/Fill-Missing-Values-with-Next-Non-Missing-Observation/m-p/42859#M5745</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;One way would be to just presort the data in descending order and apply the same logic.&amp;nbsp; e.g.,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data have;&lt;/P&gt;&lt;P&gt;&amp;nbsp; input Time_Point Missing_Values;&lt;/P&gt;&lt;P&gt;&amp;nbsp; cards;&lt;/P&gt;&lt;P&gt;1 .&lt;/P&gt;&lt;P&gt;2 .&lt;/P&gt;&lt;P&gt;3 .&lt;/P&gt;&lt;P&gt;4 .&lt;/P&gt;&lt;P&gt;5 7&lt;/P&gt;&lt;P&gt;6 .&lt;/P&gt;&lt;P&gt;7 6&lt;/P&gt;&lt;P&gt;8 5&lt;/P&gt;&lt;P&gt;9 .&lt;/P&gt;&lt;P&gt;10 4&lt;/P&gt;&lt;P&gt;11 3&lt;/P&gt;&lt;P&gt;12 2&lt;/P&gt;&lt;P&gt;13 1&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sort data=have out=want;&lt;/P&gt;&lt;P&gt;&amp;nbsp; by descending Time_Point;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;&amp;nbsp; set want;&lt;/P&gt;&lt;P&gt;&amp;nbsp; retain Filled_Data;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if not missing(Missing_Values) then&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; Filled_Data=Missing_Values;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sort data=want;&lt;/P&gt;&lt;P&gt;&amp;nbsp; by Time_Point;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 07 Nov 2011 18:30:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/ODS-and-Base-Reporting/Fill-Missing-Values-with-Next-Non-Missing-Observation/m-p/42859#M5745</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2011-11-07T18:30:17Z</dc:date>
    </item>
    <item>
      <title>Fill Missing Values with Next Non-Missing Observation</title>
      <link>https://communities.sas.com/t5/ODS-and-Base-Reporting/Fill-Missing-Values-with-Next-Non-Missing-Observation/m-p/42860#M5746</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt; This answer works great for this scenario.&amp;nbsp; Once I posted my question, I thought about doing the reverse sort.&amp;nbsp; However, I was not sure what to do if both the first AND last observations were missing.&amp;nbsp; I guess re-sort and rerun the same data step?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 07 Nov 2011 18:34:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/ODS-and-Base-Reporting/Fill-Missing-Values-with-Next-Non-Missing-Observation/m-p/42860#M5746</guid>
      <dc:creator>djbateman</dc:creator>
      <dc:date>2011-11-07T18:34:59Z</dc:date>
    </item>
    <item>
      <title>Fill Missing Values with Next Non-Missing Observation</title>
      <link>https://communities.sas.com/t5/ODS-and-Base-Reporting/Fill-Missing-Values-with-Next-Non-Missing-Observation/m-p/42861#M5747</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;If what you described make sense with your data, then you could do it with something like:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data have;&lt;/P&gt;&lt;P&gt;&amp;nbsp; input Time_Point Missing_Values;&lt;/P&gt;&lt;P&gt;&amp;nbsp; cards;&lt;/P&gt;&lt;P&gt;1 .&lt;/P&gt;&lt;P&gt;2 .&lt;/P&gt;&lt;P&gt;3 .&lt;/P&gt;&lt;P&gt;4 .&lt;/P&gt;&lt;P&gt;5 7&lt;/P&gt;&lt;P&gt;6 .&lt;/P&gt;&lt;P&gt;7 6&lt;/P&gt;&lt;P&gt;8 5&lt;/P&gt;&lt;P&gt;9 .&lt;/P&gt;&lt;P&gt;10 4&lt;/P&gt;&lt;P&gt;11 3&lt;/P&gt;&lt;P&gt;12 2&lt;/P&gt;&lt;P&gt;13 .&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sort data=have out=want;&lt;/P&gt;&lt;P&gt;&amp;nbsp; by descending Time_Point;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;&amp;nbsp; set want;&lt;/P&gt;&lt;P&gt;&amp;nbsp; retain Filled_Data;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if not missing(Missing_Values) then&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; Filled_Data=Missing_Values;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sort data=want;&lt;/P&gt;&lt;P&gt;&amp;nbsp; by Time_Point;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want (drop=last_:);&lt;/P&gt;&lt;P&gt;&amp;nbsp; set want;&lt;/P&gt;&lt;P&gt;&amp;nbsp; retain last_Filled_Data;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if not missing(Filled_Data) then&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; last_Filled_Data=Filled_Data;&lt;/P&gt;&lt;P&gt;&amp;nbsp; else Filled_Data=last_Filled_Data;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 07 Nov 2011 18:47:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/ODS-and-Base-Reporting/Fill-Missing-Values-with-Next-Non-Missing-Observation/m-p/42861#M5747</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2011-11-07T18:47:24Z</dc:date>
    </item>
    <item>
      <title>Fill Missing Values with Next Non-Missing Observation</title>
      <link>https://communities.sas.com/t5/ODS-and-Base-Reporting/Fill-Missing-Values-with-Next-Non-Missing-Observation/m-p/42862#M5748</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;It is another method. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;data have;
&amp;nbsp; input Time_Point Missing_Values;
&amp;nbsp; cards;
1 .
2 .
3 .
4 .
5 7
6 .
7 6
8 5
9 .
10 4
11 3
12 2
13 1
;
run;
data want;
 do until(missing_values or last);
&amp;nbsp; set have end=last;
&amp;nbsp; if not missing(missing_values) then want_value=missing_values;
 end;
 do until(missing_values or _last);
&amp;nbsp; set have end=_last;
&amp;nbsp; output;
 end;
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;Ksharp&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 10 Nov 2011 02:25:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/ODS-and-Base-Reporting/Fill-Missing-Values-with-Next-Non-Missing-Observation/m-p/42862#M5748</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2011-11-10T02:25:43Z</dc:date>
    </item>
    <item>
      <title>Fill Missing Values with Next Non-Missing Observation</title>
      <link>https://communities.sas.com/t5/ODS-and-Base-Reporting/Fill-Missing-Values-with-Next-Non-Missing-Observation/m-p/42863#M5749</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt; have you tried walking up and down your data with the POINT= option of the SET statement?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 10 Nov 2011 11:12:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/ODS-and-Base-Reporting/Fill-Missing-Values-with-Next-Non-Missing-Observation/m-p/42863#M5749</guid>
      <dc:creator>Peter_C</dc:creator>
      <dc:date>2011-11-10T11:12:00Z</dc:date>
    </item>
    <item>
      <title>Re: Fill Missing Values with Next Non-Missing Observation</title>
      <link>https://communities.sas.com/t5/ODS-and-Base-Reporting/Fill-Missing-Values-with-Next-Non-Missing-Observation/m-p/354842#M18499</link>
      <description>&lt;P&gt;Hello&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="login-bold"&gt;Do your code works when the dataset is grouped?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="login-bold"&gt;I am dealing with this case and so far I can not make your code to worK?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="login-bold"&gt;Could you please give me a hand?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="login-bold"&gt;Thank you&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Sun, 30 Apr 2017 22:59:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/ODS-and-Base-Reporting/Fill-Missing-Values-with-Next-Non-Missing-Observation/m-p/354842#M18499</guid>
      <dc:creator>draeko</dc:creator>
      <dc:date>2017-04-30T22:59:24Z</dc:date>
    </item>
  </channel>
</rss>

