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!
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
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.
Ready to level-up your skills? Choose your own adventure.