BookmarkSubscribeRSS Feed
Doug____
Pyrite | Level 9

I have a dataset with probably 150 columns transposed. Now for each record, most values are missing. How can I collapse the columns for each record so only the cells with values are left for each record (these are character values).

 

For example:

 

Record                          col1                        col2                   col3                     col4

1                                                                   X                         Y                       Z

2                                     X                                                       Z

 

The result I want should look something like this:

Record                       newcol1                           newcol2               newcol3

1                                      X                                     Y                        Z

2                                      X                                     Z

2 REPLIES 2
data_null__
Jade | Level 19

Seems like a WHERE statement to filter the missing values from the DATA= data set would work to produce the desired output directly from PROC TRANSPOSE.

 

proc transpose data=
   where not missing(transpose-variable);
   run;
Ksharp
Super User

If you do not have a big table ,try PROC TRANSPOSE .

 

data have;
input Record                 (         col1                        col2                   col3                     col4) ($);
cards;
1                                      .                             X                         Y                       Z
2                                     X                              .                         Z  .
;
proc transpose data=have out=temp(drop=_: where=(col1 is not missing));
by record;
var col:;
run;
proc transpose data=temp out=want(drop=_:);
by record;
var col1;
run;

SAS Innovate 2025: Save the Date

 SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!

Save the date!

How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 2 replies
  • 626 views
  • 0 likes
  • 3 in conversation