<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: proc transpose in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/proc-transpose/m-p/611881#M178447</link>
    <description>&lt;P&gt;You already have two good solutions, but here is a third that would also work and can easily accommodate more variables:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data demographics_freq;
	input category $1-6 group $8-16 frequency 18 percent 20-24;
	cards;
female treatment 3 33.33
male   treatment 6 66.67
female placebo   1 33.33
male   placebo   2 66.67
;
run;

filename tr url 'https://raw.githubusercontent.com/art297/transpose/master/transpose.sas';
%include tr ;

%transpose(data=demographics_freq, out=want, by=category, sort=yes,
 var=frequency percent, id=group, delimiter=_, var_first=no)
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Art, CEO, AnalystFinder.com&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Sun, 15 Dec 2019 15:25:08 GMT</pubDate>
    <dc:creator>art297</dc:creator>
    <dc:date>2019-12-15T15:25:08Z</dc:date>
    <item>
      <title>proc transpose</title>
      <link>https://communities.sas.com/t5/SAS-Programming/proc-transpose/m-p/611842#M178431</link>
      <description>&lt;P&gt;Have:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;category&lt;/TD&gt;&lt;TD&gt;group&lt;/TD&gt;&lt;TD&gt;frequency&lt;/TD&gt;&lt;TD&gt;percent&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;female&lt;/TD&gt;&lt;TD&gt;treatment&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;33.33&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;male&lt;/TD&gt;&lt;TD&gt;treatment&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;66.67&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;female&lt;/TD&gt;&lt;TD&gt;placebo&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;33.33&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;male&lt;/TD&gt;&lt;TD&gt;placebo&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;66.67&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Want:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;category&lt;/TD&gt;&lt;TD&gt;treatment_frequency&lt;/TD&gt;&lt;TD&gt;treatment_percent&lt;/TD&gt;&lt;TD&gt;placebo_frequency&lt;/TD&gt;&lt;TD&gt;placebo_percent&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;female&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;33.33&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;33.33&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;male&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;66.67&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;66.67&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Tried:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#000080" face="Courier New" size="2"&gt;&lt;STRONG&gt;proc&lt;/STRONG&gt;&lt;/FONT&gt; &lt;STRONG&gt;&lt;FONT color="#000080" face="Courier New" size="2"&gt;transpose&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT color="#0000ff" face="Courier New" size="2"&gt;data&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;=c.demographics_freq &lt;/FONT&gt;&lt;FONT color="#0000ff" face="Courier New" size="2"&gt;out&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;=c.test &lt;/FONT&gt;&lt;FONT color="#0000ff" face="Courier New" size="2"&gt;prefix&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;=group_;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="2"&gt;by&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt; category ;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="2"&gt;id&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt; frequency percent;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="2"&gt;var&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt; group;&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#000080" face="Courier New" size="2"&gt;run&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="Courier New" size="2"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 15 Dec 2019 04:42:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/proc-transpose/m-p/611842#M178431</guid>
      <dc:creator>monday89</dc:creator>
      <dc:date>2019-12-15T04:42:28Z</dc:date>
    </item>
    <item>
      <title>Re: proc transpose</title>
      <link>https://communities.sas.com/t5/SAS-Programming/proc-transpose/m-p/611848#M178435</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/303622"&gt;@monday89&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It seems that you already posted this question:&lt;/P&gt;
&lt;P&gt;&lt;A href="https://communities.sas.com/t5/SAS-Programming/proc-transpose-many-columns/m-p/611836" target="_self"&gt;https://communities.sas.com/t5/SAS-Programming/proc-transpose-many-columns/m-p/611836&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;There are many answer attempts. Please check them.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This one for example should work. NB: you can't do that in a single proc transpose.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data demographics_freq;
	input category $1-6 group $8-16 frequency 18 percent 20-24;
	cards;
female treatment 3 33.33
male   treatment 6 66.67
female placebo   1 33.33
male   placebo   2 66.67
;
run;

data c.test;
	merge c.demographics_freq (where=(group="treatment") rename=(frequency = treatment_frequency percent = treatment_percent))
		  c.demographics_freq (where=(group="placebo")   rename=(frequency = placebo_frequency percent = placebo_percent));
	by category;
	drop group;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Capture d’écran 2019-12-15 à 09.58.19.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/34777i7C8E1101A10F6FF5/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Capture d’écran 2019-12-15 à 09.58.19.png" alt="Capture d’écran 2019-12-15 à 09.58.19.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 15 Dec 2019 09:01:01 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/proc-transpose/m-p/611848#M178435</guid>
      <dc:creator>ed_sas_member</dc:creator>
      <dc:date>2019-12-15T09:01:01Z</dc:date>
    </item>
    <item>
      <title>Re: proc transpose</title>
      <link>https://communities.sas.com/t5/SAS-Programming/proc-transpose/m-p/611857#M178439</link>
      <description>&lt;P&gt;ED has already given you a great solution.&lt;/P&gt;
&lt;P&gt;Another one is double transpose.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data demographics_freq;
	input category $1-6 group $8-16 frequency 18 percent 20-24;
	cards;
female treatment 3 33.33
male   treatment 6 66.67
female placebo   1 33.33
male   placebo   2 66.67
;
run;
proc sort data=demographics_freq;by category group;run;
proc transpose data=demographics_freq out=test;
by category group ;
var frequency percent;
run;
proc transpose data=test out=want delimiter=_;
by category;
id group _name_;
var col1;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sun, 15 Dec 2019 10:03:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/proc-transpose/m-p/611857#M178439</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2019-12-15T10:03:07Z</dc:date>
    </item>
    <item>
      <title>Re: proc transpose</title>
      <link>https://communities.sas.com/t5/SAS-Programming/proc-transpose/m-p/611881#M178447</link>
      <description>&lt;P&gt;You already have two good solutions, but here is a third that would also work and can easily accommodate more variables:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data demographics_freq;
	input category $1-6 group $8-16 frequency 18 percent 20-24;
	cards;
female treatment 3 33.33
male   treatment 6 66.67
female placebo   1 33.33
male   placebo   2 66.67
;
run;

filename tr url 'https://raw.githubusercontent.com/art297/transpose/master/transpose.sas';
%include tr ;

%transpose(data=demographics_freq, out=want, by=category, sort=yes,
 var=frequency percent, id=group, delimiter=_, var_first=no)
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Art, CEO, AnalystFinder.com&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 15 Dec 2019 15:25:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/proc-transpose/m-p/611881#M178447</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2019-12-15T15:25:08Z</dc:date>
    </item>
    <item>
      <title>Re: proc transpose</title>
      <link>https://communities.sas.com/t5/SAS-Programming/proc-transpose/m-p/611897#M178454</link>
      <description>&lt;P&gt;Here is a solution building upon your line of thought.&amp;nbsp; I used a macro to cycle through the two analysis variables, however, the non-macro code is in the comments below it&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="want.png" style="width: 485px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/34788i14DB7ABC2A336399/image-size/large?v=v2&amp;amp;px=999" role="button" title="want.png" alt="want.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
	input category $1-6 group $8-16 frequency 18 percent 20-24;
	cards;
female treatment 3 33.33
male   treatment 6 66.67
female placebo   1 33.33
male   placebo   2 66.67
;
run;
proc sort; by category; run;

%let vars=%str(frequency percent) ;

%macro trans;
	%local i _var;
	%do i=1 %to %sysfunc(countw(&amp;amp;vars));
	   %let var = %scan(&amp;amp;vars, &amp;amp;i);
	       proc transpose data=have out=&amp;amp;var (drop=_name_) suffix=_&amp;amp;var;
	    by category ;
	    id group;
	    var &amp;amp;var;
	run;	
	%end;
	
data want; 
  merge &amp;amp;vars;
     by category; 
run;
proc print;
	id category;
run;
%mend;

%trans;

/*  
proc transpose data=have out=frequency (drop=_name_) suffix=_frequency;
    by category ;
    id group;
    var frequency;
run;
proc transpose data=have out=percent(drop=_name_) suffix=_percent;
    by category ;
    id group;
    var percent;
run;
data want; 
  merge frequency percent;
     by category; 
run;

*/&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sun, 15 Dec 2019 17:39:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/proc-transpose/m-p/611897#M178454</guid>
      <dc:creator>ghosh</dc:creator>
      <dc:date>2019-12-15T17:39:47Z</dc:date>
    </item>
  </channel>
</rss>

