<?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: Data Transpose and Rearrange the columns in SAS Data Management</title>
    <link>https://communities.sas.com/t5/SAS-Data-Management/Data-Transpose-and-Rearrange-the-columns/m-p/251357#M6759</link>
    <description>&lt;P&gt;I think this is pretty close...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;proc sort data=Have out=Inter1;&lt;BR /&gt;by PT DT RULE_ID;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;data Inter2;&lt;BR /&gt;Length CN $20;&lt;BR /&gt;retain Count;&lt;BR /&gt;keep PT DT CN DV;&lt;BR /&gt;set Inter1;&lt;BR /&gt;by PT DT;&lt;BR /&gt;if first.DT&lt;BR /&gt;then do;&lt;BR /&gt;&amp;nbsp; Count = 0;&lt;BR /&gt;end;&lt;BR /&gt;Count = Count + 1;&lt;BR /&gt;CN = "RULE_ID_"||compress(put(Count, best7.));&lt;BR /&gt;DV = RULE_ID;&lt;BR /&gt;output;&lt;BR /&gt;CN = "RULE_CAT_"||compress(put(Count, best7.));&lt;BR /&gt;DV = RULE_CAT;&lt;BR /&gt;output;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;PROC TRANSPOSE DATA=Inter2 OUT=Want;&lt;BR /&gt;&amp;nbsp;BY PT DT;&lt;BR /&gt;&amp;nbsp;ID CN;&lt;BR /&gt;&amp;nbsp;VAR DV;&lt;BR /&gt;RUN;&lt;/P&gt;</description>
    <pubDate>Sat, 20 Feb 2016 20:41:45 GMT</pubDate>
    <dc:creator>TomKari</dc:creator>
    <dc:date>2016-02-20T20:41:45Z</dc:date>
    <item>
      <title>Data Transpose and Rearrange the columns</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/Data-Transpose-and-Rearrange-the-columns/m-p/251352#M6757</link>
      <description>&lt;P&gt;Hi, I'm transposing the data with Proc summary and the code is as below -&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data have;&lt;BR /&gt; input PT DT RULE_ID RULE_CAT;&lt;BR /&gt; cards;&lt;BR /&gt;1 10 20 20&lt;BR /&gt;1 10 21 20&lt;BR /&gt;1 10 22 20&lt;BR /&gt;1 10 23 20&lt;BR /&gt;1 11 20 20&lt;BR /&gt;1 11 21 20&lt;BR /&gt;1 11 22 20&lt;BR /&gt;1 11 23 20&lt;BR /&gt;1 12 20 20&lt;BR /&gt;1 12 21 20&lt;BR /&gt;1 12 22 20&lt;BR /&gt;1 12 23 20&lt;BR /&gt;2 10 20 20&lt;BR /&gt;2 10 21 20&lt;BR /&gt;2 10 22 20&lt;BR /&gt;2 10 23 20&lt;BR /&gt;2 11 20 20&lt;BR /&gt;2 11 21 20&lt;BR /&gt;2 11 22 20&lt;BR /&gt;2 11 23 20&lt;BR /&gt;2 12 20 20&lt;BR /&gt;2 12 21 20&lt;BR /&gt;2 12 22 20&lt;BR /&gt;2 12 23 20&lt;BR /&gt;;;;;&lt;BR /&gt; run;&lt;/P&gt;
&lt;P&gt;proc sql noprint feedback;&lt;BR /&gt; select max(ptcount) into :dim &lt;BR /&gt; from (select count(PT) as ptcount from have group by PT, DT);&lt;BR /&gt; quit;&lt;BR /&gt; run;&lt;BR /&gt; &lt;BR /&gt;OPTIONS SYMBOLGEN;&lt;BR /&gt;proc summary data=have nway;&lt;BR /&gt; class PT DT;&lt;BR /&gt; output out=need idgroup(out[&amp;amp;dim](RULE_ID: RULE_CAT: )=);&lt;BR /&gt; run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;With the above code my final dataset &lt;I&gt;need&lt;/I&gt;&amp;nbsp;looks like below.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="https://communities.sas.com/t5/image/serverpage/image-id/1982iC7373A8B842ED6D2/image-size/original?v=mpbl-1&amp;amp;px=-1" border="0" alt="Capture1.1.JPG" title="Capture1.1.JPG" /&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="https://communities.sas.com/t5/image/serverpage/image-id/1983iF9F2955EA9809A30/image-size/original?v=mpbl-1&amp;amp;px=-1" border="0" alt="Capture1.2.JPG" title="Capture1.2.JPG" /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So the question now is - columns need to be rearranged like, RULE_ID_1, RULE_CAT_1,&amp;nbsp;&lt;SPAN&gt;RULE_ID_2, RULE_CAT_2,&lt;/SPAN&gt;&lt;SPAN&gt;RULE_ID_3, RULE_CAT_3,&lt;/SPAN&gt;&lt;SPAN&gt;RULE_ID_4, RULE_CAT_4.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Is this possible? Because the number of columns getting created is random and based on the value of the macro variable &lt;EM&gt;dim&lt;/EM&gt; getting created from Proc Sql.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Please share your views and suggestions.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Sat, 20 Feb 2016 19:18:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/Data-Transpose-and-Rearrange-the-columns/m-p/251352#M6757</guid>
      <dc:creator>Balas</dc:creator>
      <dc:date>2016-02-20T19:18:38Z</dc:date>
    </item>
    <item>
      <title>Re: Data Transpose and Rearrange the columns</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/Data-Transpose-and-Rearrange-the-columns/m-p/251355#M6758</link>
      <description>&lt;P&gt;You may be interested in this macro from this paper that has a few methods built in to do what you're requiring.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.sascommunity.org/wiki/A_Better_Way_to_Flip_(Transpose)_a_SAS_Dataset" target="_blank"&gt;http://www.sascommunity.org/wiki/A_Better_Way_to_Flip_(Transpose)_a_SAS_Dataset&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 20 Feb 2016 20:18:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/Data-Transpose-and-Rearrange-the-columns/m-p/251355#M6758</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2016-02-20T20:18:42Z</dc:date>
    </item>
    <item>
      <title>Re: Data Transpose and Rearrange the columns</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/Data-Transpose-and-Rearrange-the-columns/m-p/251357#M6759</link>
      <description>&lt;P&gt;I think this is pretty close...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;proc sort data=Have out=Inter1;&lt;BR /&gt;by PT DT RULE_ID;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;data Inter2;&lt;BR /&gt;Length CN $20;&lt;BR /&gt;retain Count;&lt;BR /&gt;keep PT DT CN DV;&lt;BR /&gt;set Inter1;&lt;BR /&gt;by PT DT;&lt;BR /&gt;if first.DT&lt;BR /&gt;then do;&lt;BR /&gt;&amp;nbsp; Count = 0;&lt;BR /&gt;end;&lt;BR /&gt;Count = Count + 1;&lt;BR /&gt;CN = "RULE_ID_"||compress(put(Count, best7.));&lt;BR /&gt;DV = RULE_ID;&lt;BR /&gt;output;&lt;BR /&gt;CN = "RULE_CAT_"||compress(put(Count, best7.));&lt;BR /&gt;DV = RULE_CAT;&lt;BR /&gt;output;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;PROC TRANSPOSE DATA=Inter2 OUT=Want;&lt;BR /&gt;&amp;nbsp;BY PT DT;&lt;BR /&gt;&amp;nbsp;ID CN;&lt;BR /&gt;&amp;nbsp;VAR DV;&lt;BR /&gt;RUN;&lt;/P&gt;</description>
      <pubDate>Sat, 20 Feb 2016 20:41:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/Data-Transpose-and-Rearrange-the-columns/m-p/251357#M6759</guid>
      <dc:creator>TomKari</dc:creator>
      <dc:date>2016-02-20T20:41:45Z</dc:date>
    </item>
    <item>
      <title>Re: Data Transpose and Rearrange the columns</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/Data-Transpose-and-Rearrange-the-columns/m-p/251393#M6761</link>
      <description>Like many other times I would like to question the need for transposing to wide format. What kind of analysis /processing will use the result?&lt;BR /&gt;Like you said, a problem is the varying no of columns - and that will probably be true for the programs/queries to follow.</description>
      <pubDate>Sun, 21 Feb 2016 09:30:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/Data-Transpose-and-Rearrange-the-columns/m-p/251393#M6761</guid>
      <dc:creator>LinusH</dc:creator>
      <dc:date>2016-02-21T09:30:25Z</dc:date>
    </item>
    <item>
      <title>Re: Data Transpose and Rearrange the columns</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/Data-Transpose-and-Rearrange-the-columns/m-p/251395#M6762</link>
      <description>&lt;P&gt;Thanks TomKari.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Your solution works absolutely well with the small datasets like the one provided.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But creating the &lt;EM&gt;lnter2&lt;/EM&gt;&amp;nbsp;dataset with multi millions of records will take huge CPU time and memory where a column holds all the variable names needs to be transposed.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Can you please suggest - If I need to apply the same logic on huge datasets, do I need to tweak the logic or do we have any new logic to be built?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 21 Feb 2016 09:46:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/Data-Transpose-and-Rearrange-the-columns/m-p/251395#M6762</guid>
      <dc:creator>Balas</dc:creator>
      <dc:date>2016-02-21T09:46:17Z</dc:date>
    </item>
    <item>
      <title>Re: Data Transpose and Rearrange the columns</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/Data-Transpose-and-Rearrange-the-columns/m-p/251404#M6764</link>
      <description>&lt;P&gt;I've found that trying to predict performance is a mugs game.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'd suggest giving it a try. I usually start with say 100,000 records, if I'm happy up it to a million, and just keep going up by factors of 10.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Tom&lt;/P&gt;</description>
      <pubDate>Sun, 21 Feb 2016 15:12:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/Data-Transpose-and-Rearrange-the-columns/m-p/251404#M6764</guid>
      <dc:creator>TomKari</dc:creator>
      <dc:date>2016-02-21T15:12:47Z</dc:date>
    </item>
  </channel>
</rss>

