<?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: transpose the column and retain the missing columns in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/transpose-the-column-and-retain-the-missing-columns/m-p/321341#M70931</link>
    <description>&lt;P&gt;You can get an output very close to your layout by using Proc Tabulate.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;options missing=' ';
proc tabulate data=have noseps;
  class id test;
  format test z2.;
  table 
    id,
    test=' '*n=' '*f=2.
    /rts=10
  ;
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Tue, 27 Dec 2016 21:02:03 GMT</pubDate>
    <dc:creator>Patrick</dc:creator>
    <dc:date>2016-12-27T21:02:03Z</dc:date>
    <item>
      <title>transpose the column and retain the missing columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/transpose-the-column-and-retain-the-missing-columns/m-p/321324#M70924</link>
      <description>&lt;P&gt;&lt;FONT color="#000080" face="Courier New" size="2"&gt;&lt;STRONG&gt;I have a large dataset with too many columns and rows. i want to keep the all columns all the time.&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#000080" face="Courier New" size="2"&gt;&lt;STRONG&gt;Here is the samples sas code and desired out put.&amp;nbsp;&lt;/STRONG&gt;&lt;/FONT&gt;&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;data&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt; have;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="2"&gt;input&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt; ID test;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="2"&gt;cards&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;1 01&lt;/P&gt;&lt;P&gt;1 02&lt;/P&gt;&lt;P&gt;1 03&lt;/P&gt;&lt;P&gt;1 04&lt;/P&gt;&lt;P&gt;1 05&lt;/P&gt;&lt;P&gt;1 06&lt;/P&gt;&lt;P&gt;2 02&lt;/P&gt;&lt;P&gt;2 04&lt;/P&gt;&lt;P&gt;2 05&lt;/P&gt;&lt;P&gt;2 06&lt;/P&gt;&lt;P&gt;3 08&lt;/P&gt;&lt;P&gt;3 09&lt;/P&gt;&lt;P&gt;3 10&lt;/P&gt;&lt;P&gt;4 01&lt;/P&gt;&lt;P&gt;4 08&lt;/P&gt;&lt;P&gt;4 10&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Desired output&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;ID&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;01&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;02&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;03&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;04&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;05&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;06&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;07&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;08&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;09&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;10&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;4&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&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>Tue, 27 Dec 2016 19:26:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/transpose-the-column-and-retain-the-missing-columns/m-p/321324#M70924</guid>
      <dc:creator>tekish</dc:creator>
      <dc:date>2016-12-27T19:26:13Z</dc:date>
    </item>
    <item>
      <title>Re: transpose the column and retain the missing columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/transpose-the-column-and-retain-the-missing-columns/m-p/321333#M70928</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;SAS Forum: Tranpoe and keeping missing values

inspired by
https://goo.gl/LzgjKJ
https://communities.sas.com/t5/Base-SAS-Programming/transpose-the-column-and-retain-the-missing-columns/m-p/321324


HAVE

data have;
input ID test;
cards;
1 01
1 02
1 03
1 04
1 05
1 06
2 02
2 04
2 05
2 06
3 08
3 09
3 10
4 01
4 08
4 10
run;

WANT

Up to 40 obs from want total obs=4

Obs    X1    X2    X3    X4    X5    X6    X7    X8    X9    X10

 1      1     1     1     1     1     1     .     .     .     .
 2      1     1     1     1     1     1     .     .     .     .
 3      1     1     1     1     1     1     .     1     1     1
 4      1     1     1     1     1     1     .     1     1     1


SOLUTION

data _null_;
  retain max 0;
  set have end=dne;
  if test &amp;gt; max then max=test;
  if dne then do;
     call symputx('max',put(max,3.));
     rc=dosubl('
     data want(keep=x1-x&amp;amp;max);
     do until (dne1);
       array xs x1-x&amp;amp;max;
       set have end=dne1;
       by id;
       xs[test]=(id&amp;gt;0);
       if last.id then output;
     end;
     stop;
  ');
  end;
run;quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 27 Dec 2016 20:20:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/transpose-the-column-and-retain-the-missing-columns/m-p/321333#M70928</guid>
      <dc:creator>rogerjdeangelis</dc:creator>
      <dc:date>2016-12-27T20:20:45Z</dc:date>
    </item>
    <item>
      <title>Re: transpose the column and retain the missing columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/transpose-the-column-and-retain-the-missing-columns/m-p/321341#M70931</link>
      <description>&lt;P&gt;You can get an output very close to your layout by using Proc Tabulate.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;options missing=' ';
proc tabulate data=have noseps;
  class id test;
  format test z2.;
  table 
    id,
    test=' '*n=' '*f=2.
    /rts=10
  ;
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 27 Dec 2016 21:02:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/transpose-the-column-and-retain-the-missing-columns/m-p/321341#M70931</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2016-12-27T21:02:03Z</dc:date>
    </item>
    <item>
      <title>Re: transpose the column and retain the missing columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/transpose-the-column-and-retain-the-missing-columns/m-p/321375#M70946</link>
      <description>&lt;P&gt;I'm surprised nobody proposed this already:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data addone;&lt;/P&gt;
&lt;P&gt;set have;&lt;/P&gt;
&lt;P&gt;one=1;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;proc transpose data=addone prefix=_ out=want (drop=_: ) ;&lt;/P&gt;
&lt;P&gt;by id;&lt;/P&gt;
&lt;P&gt;var one;&lt;/P&gt;
&lt;P&gt;id test;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Your data set needs to be sorted by ID to do this, but it looks like that is already the case. &amp;nbsp;And you need to add a prefix for the variable names, since 01, 02, etc. are not valid variable names in SAS.&lt;/P&gt;</description>
      <pubDate>Wed, 28 Dec 2016 03:30:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/transpose-the-column-and-retain-the-missing-columns/m-p/321375#M70946</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2016-12-28T03:30:35Z</dc:date>
    </item>
    <item>
      <title>Re: transpose the column and retain the missing columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/transpose-the-column-and-retain-the-missing-columns/m-p/321577#M71043</link>
      <description>&lt;P&gt;Curious. &amp;nbsp;Your result is different than the poster's result. &amp;nbsp;Wouldn't you want to get rid of the OUTPUT statement, and change the DO loop to look for (last.id) instead of (dne1)?&lt;/P&gt;</description>
      <pubDate>Thu, 29 Dec 2016 13:08:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/transpose-the-column-and-retain-the-missing-columns/m-p/321577#M71043</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2016-12-29T13:08:21Z</dc:date>
    </item>
    <item>
      <title>Re: transpose the column and retain the missing columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/transpose-the-column-and-retain-the-missing-columns/m-p/321582#M71045</link>
      <description>&lt;P&gt;Sorry to say so &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/51471"&gt;@tekish&lt;/a&gt;&amp;nbsp;and no offense meant&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/42345"&gt;@rogerjdeangelis&lt;/a&gt;&amp;nbsp;but you really have chosen the most complicated approach as the solution to your problem.&lt;/P&gt;
&lt;P&gt;If that's not just a once off then bear in mind that someone later on will have to understand and maintain this code and therefore keeping things simple is important.&lt;/P&gt;</description>
      <pubDate>Thu, 29 Dec 2016 13:25:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/transpose-the-column-and-retain-the-missing-columns/m-p/321582#M71045</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2016-12-29T13:25:05Z</dc:date>
    </item>
  </channel>
</rss>

