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
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.