<?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: Fill blanks with previous values in CAS in Developers</title>
    <link>https://communities.sas.com/t5/Developers/Fill-blanks-with-previous-values-in-CAS/m-p/703326#M1044</link>
    <description>&lt;P&gt;Thanks! I adapted to work in CAS, and yes it works:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data P.want / single=yes;
   set P.have;
   by ID;
   retain aa bb;
   if a then aa = a;
   else a = aa;
   if b then bb = b;
   else b = bb;
   drop aa bb;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;However if anyone knows if there are dedicated actions for these situations in Viya 3.5 or planned for Viya 4, that would be much appreciated!&lt;/P&gt;</description>
    <pubDate>Thu, 03 Dec 2020 10:24:53 GMT</pubDate>
    <dc:creator>Edoedoedo</dc:creator>
    <dc:date>2020-12-03T10:24:53Z</dc:date>
    <item>
      <title>Fill blanks with previous values in CAS</title>
      <link>https://communities.sas.com/t5/Developers/Fill-blanks-with-previous-values-in-CAS/m-p/703314#M1037</link>
      <description>&lt;P&gt;Suppose I have this table IN CAS:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;PUBLIC.HAVE&lt;/P&gt;
&lt;TABLE border="1" width="100%"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;ID&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="33.333333333333336%"&gt;1&lt;/TD&gt;
&lt;TD width="33.333333333333336%"&gt;10&lt;/TD&gt;
&lt;TD width="33.333333333333336%"&gt;20&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="33.333333333333336%"&gt;2&lt;/TD&gt;
&lt;TD width="33.333333333333336%"&gt;.&lt;/TD&gt;
&lt;TD width="33.333333333333336%"&gt;21&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="33.333333333333336%"&gt;3&lt;/TD&gt;
&lt;TD width="33.333333333333336%"&gt;.&lt;/TD&gt;
&lt;TD width="33.333333333333336%"&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="33.333333333333336%"&gt;4&lt;/TD&gt;
&lt;TD width="33.333333333333336%"&gt;11&lt;/TD&gt;
&lt;TD width="33.333333333333336%"&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I want to fill the blanks with the previous nonblank value for each column, by ID:&lt;/P&gt;
&lt;P&gt;PUBLIC.WANT&lt;/P&gt;
&lt;TABLE border="1" width="100%"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;ID&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="33.333333333333336%"&gt;1&lt;/TD&gt;
&lt;TD width="33.333333333333336%"&gt;10&lt;/TD&gt;
&lt;TD width="33.333333333333336%"&gt;20&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="33.333333333333336%"&gt;2&lt;/TD&gt;
&lt;TD width="33.333333333333336%"&gt;10&lt;/TD&gt;
&lt;TD width="33.333333333333336%"&gt;21&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="33.333333333333336%"&gt;3&lt;/TD&gt;
&lt;TD width="33.333333333333336%"&gt;10&lt;/TD&gt;
&lt;TD width="33.333333333333336%"&gt;21&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="33.333333333333336%"&gt;4&lt;/TD&gt;
&lt;TD width="33.333333333333336%"&gt;11&lt;/TD&gt;
&lt;TD width="33.333333333333336%"&gt;21&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Normally in SAS I would use the proc expand, but since the proc expand is not CAS enabled, how would you do that in the easiest way as possible using CAS ACTIONS only (Viya 3.5)?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you&lt;/P&gt;
&lt;P&gt;Regards&lt;/P&gt;</description>
      <pubDate>Thu, 03 Dec 2020 09:33:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Developers/Fill-blanks-with-previous-values-in-CAS/m-p/703314#M1037</guid>
      <dc:creator>Edoedoedo</dc:creator>
      <dc:date>2020-12-03T09:33:31Z</dc:date>
    </item>
    <item>
      <title>Re: Fill blanks with previous values in CAS</title>
      <link>https://communities.sas.com/t5/Developers/Fill-blanks-with-previous-values-in-CAS/m-p/703315#M1038</link>
      <description>&lt;P&gt;You can still use a data step, right?&lt;/P&gt;</description>
      <pubDate>Thu, 03 Dec 2020 09:40:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Developers/Fill-blanks-with-previous-values-in-CAS/m-p/703315#M1038</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2020-12-03T09:40:13Z</dc:date>
    </item>
    <item>
      <title>Re: Fill blanks with previous values in CAS</title>
      <link>https://communities.sas.com/t5/Developers/Fill-blanks-with-previous-values-in-CAS/m-p/703317#M1039</link>
      <description>&lt;P&gt;If so:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input ID A B;
datalines;
1 10 20
2 .  21
3 .  . 
4 11 . 
;

data temp / view = temp;
   set have;
   i = 1;
run;

data want (drop = i);
   update temp(obs=0) temp;
   by i;
   output;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 03 Dec 2020 09:48:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Developers/Fill-blanks-with-previous-values-in-CAS/m-p/703317#M1039</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2020-12-03T09:48:57Z</dc:date>
    </item>
    <item>
      <title>Re: Fill blanks with previous values in CAS</title>
      <link>https://communities.sas.com/t5/Developers/Fill-blanks-with-previous-values-in-CAS/m-p/703318#M1040</link>
      <description>Yes I can, but it requires a little bit of coding with lags and conditions, I was wondering whether it would exists an action to quickly handle these classic use cases (I miss proc expand and proc timeseries a lot in CAS).</description>
      <pubDate>Thu, 03 Dec 2020 09:49:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Developers/Fill-blanks-with-previous-values-in-CAS/m-p/703318#M1040</guid>
      <dc:creator>Edoedoedo</dc:creator>
      <dc:date>2020-12-03T09:49:44Z</dc:date>
    </item>
    <item>
      <title>Re: Fill blanks with previous values in CAS</title>
      <link>https://communities.sas.com/t5/Developers/Fill-blanks-with-previous-values-in-CAS/m-p/703319#M1041</link>
      <description>&lt;P&gt;I have no idea about CAS, but the data step below gives you what you want.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;BTW yes, Proc EXPAND and TIMESERIES are awesome &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 03 Dec 2020 09:51:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Developers/Fill-blanks-with-previous-values-in-CAS/m-p/703319#M1041</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2020-12-03T09:51:03Z</dc:date>
    </item>
    <item>
      <title>Re: Fill blanks with previous values in CAS</title>
      <link>https://communities.sas.com/t5/Developers/Fill-blanks-with-previous-values-in-CAS/m-p/703320#M1042</link>
      <description>&lt;P&gt;Unfortunately that code doesn't work in CAS:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;cas session;

libname P cas caslib="PUBLIC";

data P.have;
input ID A B;
datalines;
1 10 20
2 .  21
3 .  . 
4 11 . 
;

data P.temp / view = P.temp;
   set P.have;
   i = 1;
run;

data P.want (drop = i);
   update P.temp(obs=0) temp;
   by i;
   output;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;95   data P.temp / view = P.temp;
96      set P.have;
97      i = 1;
98   run;
ERROR: P.TEMP.VIEW cannot be opened because files of type VIEW are not supported in the P library.
ERROR: Unable to save DATA STEP view P.TEMP.&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 03 Dec 2020 09:54:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Developers/Fill-blanks-with-previous-values-in-CAS/m-p/703320#M1042</guid>
      <dc:creator>Edoedoedo</dc:creator>
      <dc:date>2020-12-03T09:54:17Z</dc:date>
    </item>
    <item>
      <title>Re: Fill blanks with previous values in CAS</title>
      <link>https://communities.sas.com/t5/Developers/Fill-blanks-with-previous-values-in-CAS/m-p/703321#M1043</link>
      <description>&lt;P&gt;Ah. Seems to be the view part.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Try this then. Pure data step. No views&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
   set have;
   retain aa bb;
   if a then aa = a;
   else a = aa;
   if b then bb = b;
   else b = bb;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 03 Dec 2020 09:55:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Developers/Fill-blanks-with-previous-values-in-CAS/m-p/703321#M1043</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2020-12-03T09:55:15Z</dc:date>
    </item>
    <item>
      <title>Re: Fill blanks with previous values in CAS</title>
      <link>https://communities.sas.com/t5/Developers/Fill-blanks-with-previous-values-in-CAS/m-p/703326#M1044</link>
      <description>&lt;P&gt;Thanks! I adapted to work in CAS, and yes it works:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data P.want / single=yes;
   set P.have;
   by ID;
   retain aa bb;
   if a then aa = a;
   else a = aa;
   if b then bb = b;
   else b = bb;
   drop aa bb;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;However if anyone knows if there are dedicated actions for these situations in Viya 3.5 or planned for Viya 4, that would be much appreciated!&lt;/P&gt;</description>
      <pubDate>Thu, 03 Dec 2020 10:24:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Developers/Fill-blanks-with-previous-values-in-CAS/m-p/703326#M1044</guid>
      <dc:creator>Edoedoedo</dc:creator>
      <dc:date>2020-12-03T10:24:53Z</dc:date>
    </item>
  </channel>
</rss>

