BookmarkSubscribeRSS Feed
Tom
Super User Tom
Super User

PROC TRANSPOSE will work.  You might need to run it twice however.

proc transpose data=have out=tall;
  by id event;
  var q1-q24;
run;
proc transpose data=tall out=want(drop=_name_);
  by id;
  id event _name_;
  var col1;
run;

Or you could leave the data as it is and just PRINT it that way using PROC REPORT.

proc report data=have;
   column id event,(q1-q4);
   define id / group;
   define event / across;
run;
bhr-q
Pyrite | Level 9
Thank you for your answer, it was helpful.
Kurt_Bremser
Super User

I'd go one step further and make your initial dataset longer:

proc transpose data=have out=long name=quarter;
by record_id event notsorted;
var q:;
run;

proc report data=long;
column record_id event,quarter,col1;
define record_id / group;
define event / "" across;
define quarter / "" across;
define col1 / "" analysis;
run;
bhr-q
Pyrite | Level 9
Thank you for your answer, it was helpful

SAS Innovate 2025: Register Now

Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!

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
  • 18 replies
  • 1580 views
  • 8 likes
  • 6 in conversation