I have been trying to get this input:
ID VAR_1 VAR_2 VAR_3
001 1 3
001 2
002 2
002 1
002 2 3
To this output:
ID VAR_1 VAR_2 VAR_3
001 1 2 3
002 1 2 3
Here is my test dataset. I used RETAIN to get them all line up at the end, then take the LAST.ID. However the retain does not seem to work...
data a;
input id $ 1-3 var_1 $ 4-4 var_2 $ 5-5 var_3 $ 6-6;
cards;
0011 3
001 2
002 23
0021
002 3
;
Any ideas. Thanks!
-K
Use the UPDATE statement. Only non-missing values will cause changes to previous value.
data have ;
input ID VAR_1 VAR_2 VAR_3 ;
cards;
001 1 . 3
001 . 2 .
002 . 2 .
002 1 . .
002 . 2 3
run;
data want ;
update have (obs=0) have;
by id;
run;
data _null_;
set want ;
put (_all_) (=);
run;
Use the UPDATE statement. Only non-missing values will cause changes to previous value.
data have ;
input ID VAR_1 VAR_2 VAR_3 ;
cards;
001 1 . 3
001 . 2 .
002 . 2 .
002 1 . .
002 . 2 3
run;
data want ;
update have (obs=0) have;
by id;
run;
data _null_;
set want ;
put (_all_) (=);
run;
Thanks Tom, that was quick
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 25. 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.