Currently my output will display like this
Count Age
Jan 14 12 20-25
Jan 14 66 30-50
Jan 14 67 50+
Feb 14 2 20-25
Feb 14 105 30-50
Feb 14 61 50+
I want it to display
Age Jan 14 Feb 14
20-25 12 2
30-50 66 105
50+ 67 61
Any idea how to do this within my code?
Please try
proc sort data=have;
by age;
run;
proc transpose data = have out=want;
by age;
id date;
var count;
run;
Thanks,
Jag
proc tabulate data=have;
class month age;
var count;
table age,month=' '*count=' '*sum=' '*f=8.0;
run;
data have; input date & monyy10. Count Age $; format date monyy.; cards; Jan 14 12 20-25 Jan 14 66 30-50 Jan 14 67 50+ Feb 14 2 20-25 Feb 14 105 30-50 Feb 14 61 50+ ; run; proc sort data=have(keep=date) out=temp nodupkey;by date;run; data _null_; set temp end=last; if _n_ eq 1 then call execute('data want(drop=date); merge '); call execute(cats('have(where=(date=',date,') rename=(count=',put(date,monyy.),'))')); if last then call execute(';by age;run;'); run;
Xia Keshan
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.