<?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: Sorting Horizontal Transposed Columns in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Sorting-Horizontal-Transposed-Columns/m-p/294223#M61361</link>
    <description>What did your original data and proc transpose code look like? It may be possible that by using var and Id statements the output can be in the order you want. For example &lt;A href="https://communities.sas.com/t5/Base-SAS-Programming/transposing-multiple-variables/m-p/281149#M56955" target="_blank"&gt;https://communities.sas.com/t5/Base-SAS-Programming/transposing-multiple-variables/m-p/281149#M56955&lt;/A&gt;</description>
    <pubDate>Thu, 25 Aug 2016 23:25:37 GMT</pubDate>
    <dc:creator>JohnHoughton</dc:creator>
    <dc:date>2016-08-25T23:25:37Z</dc:date>
    <item>
      <title>Sorting Horizontal Transposed Columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Sorting-Horizontal-Transposed-Columns/m-p/294212#M61354</link>
      <description>&lt;P&gt;Hi there,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have a tranposed data set (from vertical to horizontal) that looks like this. The number of transposed variables (i.e. area, bed, date) varies between datasets.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="836"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;ID&lt;/TD&gt;
&lt;TD width="64"&gt;Area1&lt;/TD&gt;
&lt;TD width="64"&gt;Area2&lt;/TD&gt;
&lt;TD width="64"&gt;Area3&lt;/TD&gt;
&lt;TD width="64"&gt;Area…&lt;/TD&gt;
&lt;TD width="64"&gt;Bed1&lt;/TD&gt;
&lt;TD width="64"&gt;Bed2&lt;/TD&gt;
&lt;TD width="64"&gt;Bed3&lt;/TD&gt;
&lt;TD width="64"&gt;Bed…&lt;/TD&gt;
&lt;TD width="64"&gt;Date1&lt;/TD&gt;
&lt;TD width="64"&gt;Date2&lt;/TD&gt;
&lt;TD width="64"&gt;Date3&lt;/TD&gt;
&lt;TD width="68"&gt;Date…&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;BedA&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;1/1/2016&lt;/TD&gt;
&lt;TD&gt;1/2/2016&lt;/TD&gt;
&lt;TD&gt;1/4/2016&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;BedA&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;1/1/2016&lt;/TD&gt;
&lt;TD&gt;1/2/2016&lt;/TD&gt;
&lt;TD&gt;########&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;Z&lt;/TD&gt;
&lt;TD&gt;BedA&lt;/TD&gt;
&lt;TD&gt;BedB&lt;/TD&gt;
&lt;TD&gt;BedC&lt;/TD&gt;
&lt;TD&gt;BedZ&lt;/TD&gt;
&lt;TD&gt;1/1/2016&lt;/TD&gt;
&lt;TD&gt;1/3/2016&lt;/TD&gt;
&lt;TD&gt;########&lt;/TD&gt;
&lt;TD&gt;5/30/2016&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I want to order the variables to look like this&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="836"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;ID&lt;/TD&gt;
&lt;TD width="64"&gt;Area1&lt;/TD&gt;
&lt;TD width="64"&gt;Bed1&lt;/TD&gt;
&lt;TD width="64"&gt;Date1&lt;/TD&gt;
&lt;TD width="64"&gt;Area2&lt;/TD&gt;
&lt;TD width="64"&gt;Bed2&lt;/TD&gt;
&lt;TD width="64"&gt;Date2&lt;/TD&gt;
&lt;TD width="64"&gt;Area3&lt;/TD&gt;
&lt;TD width="64"&gt;Bed3&lt;/TD&gt;
&lt;TD width="64"&gt;Date3&lt;/TD&gt;
&lt;TD width="64"&gt;Area…&lt;/TD&gt;
&lt;TD width="64"&gt;Bed…&lt;/TD&gt;
&lt;TD width="68"&gt;Date…&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Is there any LOOP function or macro that i can use in order to sort the table this way?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 25 Aug 2016 22:31:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Sorting-Horizontal-Transposed-Columns/m-p/294212#M61354</guid>
      <dc:creator>ysk</dc:creator>
      <dc:date>2016-08-25T22:31:45Z</dc:date>
    </item>
    <item>
      <title>Re: Sorting Horizontal Transposed Columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Sorting-Horizontal-Transposed-Columns/m-p/294215#M61357</link>
      <description>&lt;P&gt;Why do you need to sort the columns? Any report procedure will allow you to order them as needed.&lt;/P&gt;</description>
      <pubDate>Thu, 25 Aug 2016 22:47:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Sorting-Horizontal-Transposed-Columns/m-p/294215#M61357</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2016-08-25T22:47:48Z</dc:date>
    </item>
    <item>
      <title>Re: Sorting Horizontal Transposed Columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Sorting-Horizontal-Transposed-Columns/m-p/294218#M61358</link>
      <description>Because i have more than 30+columns for each transposed variables (i.e.&lt;BR /&gt;Area1 area2 area3...area30) and i would like it to be sorted by area1 bed1&lt;BR /&gt;date1 so its easier to interpret the data.&lt;BR /&gt;&lt;BR /&gt;##- Please type your reply above this line. Simple formatting, no&lt;BR /&gt;attachments. -##</description>
      <pubDate>Thu, 25 Aug 2016 22:54:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Sorting-Horizontal-Transposed-Columns/m-p/294218#M61358</guid>
      <dc:creator>ysk</dc:creator>
      <dc:date>2016-08-25T22:54:10Z</dc:date>
    </item>
    <item>
      <title>Re: Sorting Horizontal Transposed Columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Sorting-Horizontal-Transposed-Columns/m-p/294223#M61361</link>
      <description>What did your original data and proc transpose code look like? It may be possible that by using var and Id statements the output can be in the order you want. For example &lt;A href="https://communities.sas.com/t5/Base-SAS-Programming/transposing-multiple-variables/m-p/281149#M56955" target="_blank"&gt;https://communities.sas.com/t5/Base-SAS-Programming/transposing-multiple-variables/m-p/281149#M56955&lt;/A&gt;</description>
      <pubDate>Thu, 25 Aug 2016 23:25:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Sorting-Horizontal-Transposed-Columns/m-p/294223#M61361</guid>
      <dc:creator>JohnHoughton</dc:creator>
      <dc:date>2016-08-25T23:25:37Z</dc:date>
    </item>
    <item>
      <title>Re: Sorting Horizontal Transposed Columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Sorting-Horizontal-Transposed-Columns/m-p/294226#M61362</link>
      <description>&lt;P&gt;Build your variable list into a macro variable and use that in a select or retain to reorder your data.&lt;/P&gt;
&lt;P&gt;If retain don't include the , to separate your variable list.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data _null_;
	length new_var $32000.;

	do i=1 to 30;
		new_var=catx(", ", new_var, catt("area", i), catt('bed', i), catt('date', i));
	end;
	call symputx('var_list', new_var, 'g');
run;

%put &amp;amp;var_list.;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 25 Aug 2016 23:52:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Sorting-Horizontal-Transposed-Columns/m-p/294226#M61362</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2016-08-25T23:52:15Z</dc:date>
    </item>
    <item>
      <title>Re: Sorting Horizontal Transposed Columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Sorting-Horizontal-Transposed-Columns/m-p/294245#M61364</link>
      <description>&lt;PRE&gt;
You could check the MERGE skill proposed by Me,Matt,Arthur.T :


http://support.sas.com/resources/papers/proceedings15/2785-2015.pdf

&lt;/PRE&gt;</description>
      <pubDate>Fri, 26 Aug 2016 01:35:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Sorting-Horizontal-Transposed-Columns/m-p/294245#M61364</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2016-08-26T01:35:18Z</dc:date>
    </item>
    <item>
      <title>Re: Sorting Horizontal Transposed Columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Sorting-Horizontal-Transposed-Columns/m-p/294431#M61430</link>
      <description>&lt;P&gt;Hi Reeza,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks for your solution. I have created var_list and tried to retain using two ways,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data have;&lt;/P&gt;
&lt;P&gt;set have;&lt;/P&gt;
&lt;P&gt;retain &amp;amp;var_list.;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;but this gives me an error because there is , between variables.&lt;/P&gt;
&lt;P&gt;ERROR 22-322: Syntax error, expecting one of the following: a name, a quoted string, a numeric constant, a datetime constant, a missing value, (, -, :, ;, _ALL_, _CHARACTER_, _CHAR_, _NUMERIC_.&lt;/P&gt;
&lt;P&gt;ERROR 76-322: Syntax error, statement will be ignored.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;second approach i have is using proc sql but get this error in return,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;proc sql;&lt;BR /&gt;create table have2&amp;nbsp;&amp;nbsp;as select &amp;amp;var_list. from have; quit;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;ERROR: The following columns were not found in the contributing tables: area19, area20, area21, area22, area23, area24, area25, bed19, bed20, bed21, bed22, bed23, bed24, bed25,&lt;BR /&gt; checkin_date_time19, checkin_date_time20, checkin_date_time21, checkin_date_time22, checkin_date_time23, checkin_date_time24, checkin_date_time25, checkout_date_time19,&lt;BR /&gt; checkout_date_time20, checkout_date_time21, checkout_date_time22, checkout_date_time23, checkout_date_time24, checkout_date_time25, LOS19, LOS20, LOS21, LOS22, LOS23, LOS24, LOS25.&lt;BR /&gt;NOTE: The SAS System stopped processing this step because of errors.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Is there a way to fix this?&lt;/P&gt;</description>
      <pubDate>Fri, 26 Aug 2016 15:38:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Sorting-Horizontal-Transposed-Columns/m-p/294431#M61430</guid>
      <dc:creator>ysk</dc:creator>
      <dc:date>2016-08-26T15:38:04Z</dc:date>
    </item>
    <item>
      <title>Re: Sorting Horizontal Transposed Columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Sorting-Horizontal-Transposed-Columns/m-p/294435#M61431</link>
      <description>Thanks Ksharp but when there is more than 10+ transposed variables (i.e. Area1 ...Area10) it starts to sort data by Area1, Area10, Area2 Area20 and etc.. which is not the way I want sorted.</description>
      <pubDate>Fri, 26 Aug 2016 15:45:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Sorting-Horizontal-Transposed-Columns/m-p/294435#M61431</guid>
      <dc:creator>ysk</dc:creator>
      <dc:date>2016-08-26T15:45:37Z</dc:date>
    </item>
    <item>
      <title>Re: Sorting Horizontal Transposed Columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Sorting-Horizontal-Transposed-Columns/m-p/294445#M61434</link>
      <description>Then post your RAW data, and see what we can get .</description>
      <pubDate>Fri, 26 Aug 2016 15:56:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Sorting-Horizontal-Transposed-Columns/m-p/294445#M61434</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2016-08-26T15:56:03Z</dc:date>
    </item>
    <item>
      <title>Re: Sorting Horizontal Transposed Columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Sorting-Horizontal-Transposed-Columns/m-p/294454#M61437</link>
      <description>&lt;PRE&gt;
OK. Just simple change the order of variables.


data have;
infile cards expandtabs truncover;
input
ID	(Area1	Area2	Area3	Bed1	Bed2	Bed3	Date1	Date2	Date3) (:$14.);
cards;
1	A	B	 	 	BedA	 	 	 	1/1/2016	1/2/2016	1/4/2016	 
2	A	B	 	 	BedA	 	 	 	1/1/2016	1/2/2016	########	 
3	A	B	C	Z	BedA	BedB	BedC	BedZ	1/1/2016	1/3/2016	########	5/30/2016
;
run;
proc transpose data=have(obs=0 drop=id) out=temp;
 var _all_;
run;
proc sql;
 select _name_ into : list separated by ' '
  from temp
   order by input(compress(_name_,,'kd'),best32.),compress(_name_,,'ka');
quit;
data want;
 retain id &amp;amp;list;
 set have;
run;


&lt;/PRE&gt;</description>
      <pubDate>Fri, 26 Aug 2016 16:12:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Sorting-Horizontal-Transposed-Columns/m-p/294454#M61437</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2016-08-26T16:12:32Z</dc:date>
    </item>
  </channel>
</rss>

