Suppose I have this table IN CAS:
PUBLIC.HAVE
ID | A | B |
1 | 10 | 20 |
2 | . | 21 |
3 | . | . |
4 | 11 | . |
I want to fill the blanks with the previous nonblank value for each column, by ID:
PUBLIC.WANT
ID | A | B |
1 | 10 | 20 |
2 | 10 | 21 |
3 | 10 | 21 |
4 | 11 | 21 |
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)?
Thank you
Regards
Ah. Seems to be the view part.
Try this then. Pure data step. No views
data want;
set have;
retain aa bb;
if a then aa = a;
else a = aa;
if b then bb = b;
else b = bb;
run;
You can still use a data step, right?
I have no idea about CAS, but the data step below gives you what you want.
BTW yes, Proc EXPAND and TIMESERIES are awesome 🙂
If so:
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;
Unfortunately that code doesn't work in CAS:
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;
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.
Ah. Seems to be the view part.
Try this then. Pure data step. No views
data want;
set have;
retain aa bb;
if a then aa = a;
else a = aa;
if b then bb = b;
else b = bb;
run;
Thanks! I adapted to work in CAS, and yes it works:
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;
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!
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 16. Read more here about why you should contribute and what is in it for you!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Select SAS Training centers are offering in-person courses. View upcoming courses for: