I have a data set in this form:
data have;
input id x1-x5;
datalines;
1 3 . . . .
2 . 2 . . .
3 . . 5 . .
4 . . . 7 .
5 . . . . 7
;
I'm trying to use an array that will create a new variable to the non-missing value. I want my new variable to look like:
x_new
3
2
5
7
7
My do loop is only selecting the final value (x5), how do I get it to select the non-missing.
Use the Coalesce Function like this
data have;
input id x1-x5;
datalines;
1 3 . . . .
2 . 2 . . .
3 . . 5 . .
4 . . . 7 .
5 . . . . 7
;
data want(keep=id xnew);
set have;
xnew=coalesce(of x1-x5);
run;
Result:
id xnew 1 3 2 2 3 5 4 7 5 7
Use the Coalesce Function like this
data have;
input id x1-x5;
datalines;
1 3 . . . .
2 . 2 . . .
3 . . 5 . .
4 . . . 7 .
5 . . . . 7
;
data want(keep=id xnew);
set have;
xnew=coalesce(of x1-x5);
run;
Result:
id xnew 1 3 2 2 3 5 4 7 5 7
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.
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.