<?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-issue in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Proc-Transpose-issue/m-p/855717#M338153</link>
    <description>&lt;P&gt;Don't create a dataset like this, long beats wide (Maxim 19). Do not put data into structure.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;A report can be easily done like this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc report data=have;
column id (number1 number2),year;
define id /group;
define number1 / analysis;
define number2 / analysis;
define year / "" across;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;and it does not need prior sorting.&lt;/P&gt;</description>
    <pubDate>Thu, 26 Jan 2023 11:28:13 GMT</pubDate>
    <dc:creator>Kurt_Bremser</dc:creator>
    <dc:date>2023-01-26T11:28:13Z</dc:date>
    <item>
      <title>Proc-Transpose-issue</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-Transpose-issue/m-p/855694#M338149</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;its probably easy, but I just doesnt get the proc-transpose-function. My dataset have:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE style="border-collapse: collapse; width: 240pt;" border="0" width="320" cellspacing="0" cellpadding="0"&gt;
&lt;TBODY&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD width="80" height="20" style="height: 15.0pt; width: 60pt;"&gt;&lt;STRONG&gt;year&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="80" style="width: 60pt;"&gt;&lt;STRONG&gt;ID&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="80" style="width: 60pt;"&gt;&lt;STRONG&gt;number1&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="80" style="width: 60pt;"&gt;&lt;STRONG&gt;number2&lt;/STRONG&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" style="height: 15.0pt;"&gt;2019&lt;/TD&gt;
&lt;TD align="right"&gt;111&lt;/TD&gt;
&lt;TD align="right"&gt;45&lt;/TD&gt;
&lt;TD align="right"&gt;21&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" style="height: 15.0pt;"&gt;2019&lt;/TD&gt;
&lt;TD align="right"&gt;112&lt;/TD&gt;
&lt;TD align="right"&gt;8&lt;/TD&gt;
&lt;TD align="right"&gt;21&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" style="height: 15.0pt;"&gt;2019&lt;/TD&gt;
&lt;TD align="right"&gt;113&lt;/TD&gt;
&lt;TD align="right"&gt;4&lt;/TD&gt;
&lt;TD align="right"&gt;35&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" style="height: 15.0pt;"&gt;2019&lt;/TD&gt;
&lt;TD align="right"&gt;114&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD align="right"&gt;48&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" style="height: 15.0pt;"&gt;2019&lt;/TD&gt;
&lt;TD align="right"&gt;115&lt;/TD&gt;
&lt;TD align="right"&gt;165&lt;/TD&gt;
&lt;TD align="right"&gt;21&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" style="height: 15.0pt;"&gt;2019&lt;/TD&gt;
&lt;TD align="right"&gt;116&lt;/TD&gt;
&lt;TD align="right"&gt;2&lt;/TD&gt;
&lt;TD align="right"&gt;30&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" style="height: 15.0pt;"&gt;2019&lt;/TD&gt;
&lt;TD align="right"&gt;117&lt;/TD&gt;
&lt;TD align="right"&gt;12&lt;/TD&gt;
&lt;TD align="right"&gt;15&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" style="height: 15.0pt;"&gt;2020&lt;/TD&gt;
&lt;TD align="right"&gt;111&lt;/TD&gt;
&lt;TD align="right"&gt;46&lt;/TD&gt;
&lt;TD align="right"&gt;25&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" style="height: 15.0pt;"&gt;2020&lt;/TD&gt;
&lt;TD align="right"&gt;112&lt;/TD&gt;
&lt;TD align="right"&gt;9&lt;/TD&gt;
&lt;TD align="right"&gt;26&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" style="height: 15.0pt;"&gt;2020&lt;/TD&gt;
&lt;TD align="right"&gt;113&lt;/TD&gt;
&lt;TD align="right"&gt;3&lt;/TD&gt;
&lt;TD align="right"&gt;34&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" style="height: 15.0pt;"&gt;2020&lt;/TD&gt;
&lt;TD align="right"&gt;114&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD align="right"&gt;42&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" style="height: 15.0pt;"&gt;2020&lt;/TD&gt;
&lt;TD align="right"&gt;115&lt;/TD&gt;
&lt;TD align="right"&gt;166&lt;/TD&gt;
&lt;TD align="right"&gt;20&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" style="height: 15.0pt;"&gt;2020&lt;/TD&gt;
&lt;TD align="right"&gt;116&lt;/TD&gt;
&lt;TD align="right"&gt;3&lt;/TD&gt;
&lt;TD align="right"&gt;29&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD height="20" align="right" style="height: 15.0pt;"&gt;2020&lt;/TD&gt;
&lt;TD align="right"&gt;117&lt;/TD&gt;
&lt;TD align="right"&gt;15&lt;/TD&gt;
&lt;TD align="right"&gt;13&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;So, my have-dataset has actually two blocks of IDs underneath. Every ID occurs twice: 1x for the year 2019 and 1x for 2020.&lt;/P&gt;
&lt;P&gt;What I want is pretty simple: I want to get the year as a column:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="472"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="80"&gt;&lt;STRONG&gt;ID&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="98"&gt;&lt;STRONG&gt;number1_2019&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="98"&gt;&lt;STRONG&gt;number2_2019&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="98"&gt;&lt;STRONG&gt;number1_2020&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="98"&gt;&lt;STRONG&gt;number2_2020&lt;/STRONG&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;111&lt;/TD&gt;
&lt;TD&gt;45&lt;/TD&gt;
&lt;TD&gt;21&lt;/TD&gt;
&lt;TD&gt;46&lt;/TD&gt;
&lt;TD&gt;25&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;112&lt;/TD&gt;
&lt;TD&gt;8&lt;/TD&gt;
&lt;TD&gt;21&lt;/TD&gt;
&lt;TD&gt;9&lt;/TD&gt;
&lt;TD&gt;26&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;113&lt;/TD&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;TD&gt;35&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;34&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;114&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;48&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;42&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;115&lt;/TD&gt;
&lt;TD&gt;165&lt;/TD&gt;
&lt;TD&gt;21&lt;/TD&gt;
&lt;TD&gt;166&lt;/TD&gt;
&lt;TD&gt;20&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;116&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;30&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;29&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;117&lt;/TD&gt;
&lt;TD&gt;12&lt;/TD&gt;
&lt;TD&gt;15&lt;/TD&gt;
&lt;TD&gt;15&lt;/TD&gt;
&lt;TD&gt;13&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you for help!&lt;/P&gt;</description>
      <pubDate>Thu, 26 Jan 2023 08:19:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-Transpose-issue/m-p/855694#M338149</guid>
      <dc:creator>Konkordanz</dc:creator>
      <dc:date>2023-01-26T08:19:12Z</dc:date>
    </item>
    <item>
      <title>Re: Proc-Transpose-issue</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-Transpose-issue/m-p/855697#M338151</link>
      <description>&lt;P&gt;The dataset you want to create looks like a report, having data in variable names is almost always a bad idea making the next steps more difficult. So, why do you need that structure?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Afaik your problem can't be solved by using proc transpose once, but by calling it twice and merging the results:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sort data= have out= sorted;
   by Id year;
run;

proc transpose data= sorted out= transposed1(drop= _name_) prefix= number1_;
   by Id;
   var number1;
   id year;
run;

proc transpose data= sorted out= transposed2(drop= _name_) prefix= number2_;
   by Id;
   var number2;
   id year;
run;

data want;
   merge transposed1 transposed2;
   by id;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;This should work, code is untested, because data wasn't provided in usable form.&lt;/P&gt;</description>
      <pubDate>Thu, 26 Jan 2023 10:07:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-Transpose-issue/m-p/855697#M338151</guid>
      <dc:creator>andreas_lds</dc:creator>
      <dc:date>2023-01-26T10:07:28Z</dc:date>
    </item>
    <item>
      <title>Re: Proc-Transpose-issue</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-Transpose-issue/m-p/855716#M338152</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
infile cards expandtabs truncover;
input year	ID	number1	number2;
cards;
2019	111	45	21
2019	112	8	21
2019	113	4	35
2019	114	. 	48
2019	115	165	21
2019	116	2	30
2019	117	12	15
2020	111	46	25
2020	112	9	26
2020	113	3	34
2020	114	 .	42
2020	115	166	20
2020	116	3	29
2020	117	15	13
;

proc sql noprint;
select distinct catt('have(where=(year=',year,') rename=(
number1=number1_',year,' number2=number2_',year,'))') into :merge separated by ' '
 from have;
quit;
data want;
 merge &amp;amp;merge.;
 by id;
 drop year;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 26 Jan 2023 11:15:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-Transpose-issue/m-p/855716#M338152</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2023-01-26T11:15:52Z</dc:date>
    </item>
    <item>
      <title>Re: Proc-Transpose-issue</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-Transpose-issue/m-p/855717#M338153</link>
      <description>&lt;P&gt;Don't create a dataset like this, long beats wide (Maxim 19). Do not put data into structure.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;A report can be easily done like this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc report data=have;
column id (number1 number2),year;
define id /group;
define number1 / analysis;
define number2 / analysis;
define year / "" across;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;and it does not need prior sorting.&lt;/P&gt;</description>
      <pubDate>Thu, 26 Jan 2023 11:28:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-Transpose-issue/m-p/855717#M338153</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2023-01-26T11:28:13Z</dc:date>
    </item>
    <item>
      <title>Re: Proc-Transpose-issue</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-Transpose-issue/m-p/855923#M338221</link>
      <description>&lt;P&gt;Thx for helping! After reading that, I will try it without transposing.&lt;/P&gt;</description>
      <pubDate>Fri, 27 Jan 2023 11:41:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-Transpose-issue/m-p/855923#M338221</guid>
      <dc:creator>Konkordanz</dc:creator>
      <dc:date>2023-01-27T11:41:37Z</dc:date>
    </item>
  </channel>
</rss>

