Hi,
This is an interesting question. I have a sample data like below:
x y freq
------------------------
F High 3
M Low 2
F Low 4
M High 1
What I want to achieve is to use some approach to transform the above table into the format as:
x High Low
F 3 4
M 1 2
That is, the values of variable y have been transposed to become the new variable names.
I hope to learn from you. Thanks.
Ruth
Here you go:
data work.data;
input x $ y $ gender $;
cards;
1 1 F
1 2 M
2 1 F
2 2 F
1 2 M
;
proc sql;
create table want as
select *,count
;
data have;
infile cards;
input x $ y $ freq;
cards;
F High 3
M Low 2
F Low 4
M High 1
;
proc sort data=have;
by x;
run;
proc transpose data=have out=want (drop=_name_);
by x;
id y;
var freq;
run;
proc print;run;
Regards,
Haikuo
Here you go:
data work.data;
input x $ y $ gender $;
cards;
1 1 F
1 2 M
2 1 F
2 2 F
1 2 M
;
proc sql;
create table want as
select *,count
;
data have;
infile cards;
input x $ y $ freq;
cards;
F High 3
M Low 2
F Low 4
M High 1
;
proc sort data=have;
by x;
run;
proc transpose data=have out=want (drop=_name_);
by x;
id y;
var freq;
run;
proc print;run;
Regards,
Haikuo
This is excellent and neat. Thanks a lot.
Hi:
And, in addition to PROC TRANSPOSE, which makes an output dataset, you can also use PROC TABULATE or PROC REPORT to generate your desired results in report form.
cynthia
ods listing close;
ods html file='c:\temp\rep_tab.html';
proc tabulate data=yourdata f=6.;
title '1) TABULATE';
class x y;
var freq;
tables x,y*freq=' ';
keylabel sum=' ';
run;
proc report data=yourdata nowd;
title '2) REPORT';
column x freq,y;
define x /group style(column)=Header;
define y / across;
define freq / sum ' ';
run;
ods html close;
title;
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 16. Read more here about why you should contribute and what is in it for you!
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.