<?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 wide datasets to long datasets in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Transpose-wide-datasets-to-long-datasets/m-p/784200#M250213</link>
    <description>&lt;P&gt;IMO it would be simpler to use three arrays instead of a multidimensional array.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data Want;
set Have;

array _set {2016:2018} Set_FY2016-SET_FY2018;
array _track {2016:2018} track_FY2016-track_FY2018;

*repeat for LET;
do year = 2016 to 2018;
    SET = _set(year);
     Track = _track(year);
    *add in LET;
     output;
end;

keep ID Year Set Track Let;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;BR /&gt;Details on this methodology for Wide to Long transformations:&lt;BR /&gt;&lt;A href="https://stats.idre.ucla.edu/sas/modules/reshaping-data-wide-to-long-using-a-data-step/" target="_blank"&gt;https://stats.idre.ucla.edu/sas/modules/reshaping-data-wide-to-long-using-a-data-step/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/408791"&gt;@KevinRetric&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;Dear Forum,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you very much for your answers so far. It has been very helpful.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I would like to ask one more question concerning the transpose of wide datasets to long datasets. I have found very useful information and codes on the internet so far, however, I was wondering whether there is a more efficient code for the length of my dataset.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I would like to transpose the following dataset (the original file contains more rows and columns) ....&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;set_FY2016&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;set_FY2017&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;set_FY2018&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;track_FY2016&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;track_FY2017&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;track_FY2018&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Let_FY2016&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Let_FY2017&amp;nbsp;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Let_FY2018&amp;nbsp;&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;10&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;20&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;5&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;12&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;212&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;3&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;120&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;204&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;53&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;8&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;0&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;10&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;4&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;3&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;32&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;82&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;3&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;103&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;5&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;40&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;0&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;55&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;44&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;3&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;523&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;440&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;12&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; to achieve the following result:&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;Year&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Set&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Track&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Let&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;2016&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;10&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;12&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;120&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;2017&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;20&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;212&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;204&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;2018&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;5&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;3&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;53&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;2016&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;8&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;4&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;82&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;2017&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;0&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;3&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;3&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;...&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;...&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;...&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;...&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;...&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;I was trying to achieve this using the following code. Unfortunately, it returns an error message (maybe a macro can be used?):&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data Want;&lt;BR /&gt;set Have;&lt;BR /&gt;array new {&lt;STRONG&gt;3&lt;/STRONG&gt;} Set_ Track_ Let_;&lt;BR /&gt;array old {&lt;STRONG&gt;3&lt;/STRONG&gt;, &lt;STRONG&gt;2016&lt;/STRONG&gt;:&lt;STRONG&gt;2018&lt;/STRONG&gt;}&amp;nbsp;Set_: Track_: Let_: ; &lt;STRONG&gt;/*Error Message received here: "To many variables" -- I know I can finish this code by adding theses variables manually, incl. the years , but I would like to loop/macro this process*/&lt;/STRONG&gt;&lt;BR /&gt;do year = &lt;STRONG&gt;2016&lt;/STRONG&gt; to &lt;STRONG&gt;2018&lt;/STRONG&gt;;&lt;BR /&gt;do k=&lt;STRONG&gt;1&lt;/STRONG&gt; to &lt;STRONG&gt;3&lt;/STRONG&gt;;&lt;BR /&gt;new{k} = old{k, year};&lt;BR /&gt;end;&lt;BR /&gt;output;&lt;BR /&gt;end;&lt;BR /&gt;keep ID Year Set Track Let;&lt;BR /&gt;&lt;STRONG&gt;run;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I would really appreciate your advice here - thank you very much for your input.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I wish you a nice day&lt;/P&gt;
&lt;P&gt;Kevin&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Sun, 05 Dec 2021 19:07:17 GMT</pubDate>
    <dc:creator>Reeza</dc:creator>
    <dc:date>2021-12-05T19:07:17Z</dc:date>
    <item>
      <title>Transpose wide datasets to long datasets</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Transpose-wide-datasets-to-long-datasets/m-p/784187#M250206</link>
      <description>&lt;P&gt;Dear Forum,&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you very much for your answers so far. It has been very helpful.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I would like to ask one more question concerning the transpose of wide datasets to long datasets. I have found very useful information and codes on the internet so far, however, I was wondering whether there is a more efficient code for the length of my dataset.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I would like to transpose the following dataset (the original file contains more rows and columns) ....&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;set_FY2016&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;set_FY2017&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;set_FY2018&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;track_FY2016&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;track_FY2017&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;track_FY2018&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Let_FY2016&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Let_FY2017&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Let_FY2018&amp;nbsp;&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;10&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;20&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;5&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;12&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;212&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;120&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;204&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;53&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;8&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;10&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;4&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;32&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;82&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;103&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;5&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;40&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;55&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;44&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;523&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;440&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;12&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; to achieve the following result:&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;Year&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Set&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Track&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Let&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;2016&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;10&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;12&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;120&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;2017&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;20&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;212&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;204&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;2018&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;5&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;53&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;2016&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;8&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;4&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;82&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;2017&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;...&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;...&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;...&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;...&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;...&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;I was trying to achieve this using the following code. Unfortunately, it returns an error message (maybe a macro can be used?):&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;data Want;&lt;BR /&gt;set Have;&lt;BR /&gt;array new {&lt;STRONG&gt;3&lt;/STRONG&gt;} Set_ Track_ Let_;&lt;BR /&gt;array old {&lt;STRONG&gt;3&lt;/STRONG&gt;, &lt;STRONG&gt;2016&lt;/STRONG&gt;:&lt;STRONG&gt;2018&lt;/STRONG&gt;}&amp;nbsp;Set_: Track_: Let_: ; &lt;STRONG&gt;/*Error Message received here: "To many variables" -- I know I can finish this code by adding theses variables manually, incl. the years , but I would like to loop/macro this process*/&lt;/STRONG&gt;&lt;BR /&gt;do year = &lt;STRONG&gt;2016&lt;/STRONG&gt; to &lt;STRONG&gt;2018&lt;/STRONG&gt;;&lt;BR /&gt;do k=&lt;STRONG&gt;1&lt;/STRONG&gt; to &lt;STRONG&gt;3&lt;/STRONG&gt;;&lt;BR /&gt;new{k} = old{k, year};&lt;BR /&gt;end;&lt;BR /&gt;output;&lt;BR /&gt;end;&lt;BR /&gt;keep ID Year Set Track Let;&lt;BR /&gt;&lt;STRONG&gt;run;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I would really appreciate your advice here - thank you very much for your input.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I wish you a nice day&lt;/P&gt;&lt;P&gt;Kevin&lt;/P&gt;</description>
      <pubDate>Sun, 05 Dec 2021 16:12:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Transpose-wide-datasets-to-long-datasets/m-p/784187#M250206</guid>
      <dc:creator>KevinRetric</dc:creator>
      <dc:date>2021-12-05T16:12:49Z</dc:date>
    </item>
    <item>
      <title>Re: Transpose wide datasets to long datasets</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Transpose-wide-datasets-to-long-datasets/m-p/784200#M250213</link>
      <description>&lt;P&gt;IMO it would be simpler to use three arrays instead of a multidimensional array.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data Want;
set Have;

array _set {2016:2018} Set_FY2016-SET_FY2018;
array _track {2016:2018} track_FY2016-track_FY2018;

*repeat for LET;
do year = 2016 to 2018;
    SET = _set(year);
     Track = _track(year);
    *add in LET;
     output;
end;

keep ID Year Set Track Let;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;BR /&gt;Details on this methodology for Wide to Long transformations:&lt;BR /&gt;&lt;A href="https://stats.idre.ucla.edu/sas/modules/reshaping-data-wide-to-long-using-a-data-step/" target="_blank"&gt;https://stats.idre.ucla.edu/sas/modules/reshaping-data-wide-to-long-using-a-data-step/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/408791"&gt;@KevinRetric&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;Dear Forum,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you very much for your answers so far. It has been very helpful.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I would like to ask one more question concerning the transpose of wide datasets to long datasets. I have found very useful information and codes on the internet so far, however, I was wondering whether there is a more efficient code for the length of my dataset.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I would like to transpose the following dataset (the original file contains more rows and columns) ....&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;set_FY2016&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;set_FY2017&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;set_FY2018&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;track_FY2016&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;track_FY2017&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;track_FY2018&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Let_FY2016&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Let_FY2017&amp;nbsp;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Let_FY2018&amp;nbsp;&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;10&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;20&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;5&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;12&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;212&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;3&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;120&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;204&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;53&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;8&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;0&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;10&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;4&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;3&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;32&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;82&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;3&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;103&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;5&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;40&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;0&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;55&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;44&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;3&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;523&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;440&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;12&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; to achieve the following result:&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;Year&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Set&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Track&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Let&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;2016&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;10&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;12&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;120&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;2017&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;20&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;212&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;204&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;2018&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;5&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;3&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;53&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;2016&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;8&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;4&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;82&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;2017&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;0&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;3&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;3&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;...&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;...&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;...&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;...&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;...&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;I was trying to achieve this using the following code. Unfortunately, it returns an error message (maybe a macro can be used?):&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data Want;&lt;BR /&gt;set Have;&lt;BR /&gt;array new {&lt;STRONG&gt;3&lt;/STRONG&gt;} Set_ Track_ Let_;&lt;BR /&gt;array old {&lt;STRONG&gt;3&lt;/STRONG&gt;, &lt;STRONG&gt;2016&lt;/STRONG&gt;:&lt;STRONG&gt;2018&lt;/STRONG&gt;}&amp;nbsp;Set_: Track_: Let_: ; &lt;STRONG&gt;/*Error Message received here: "To many variables" -- I know I can finish this code by adding theses variables manually, incl. the years , but I would like to loop/macro this process*/&lt;/STRONG&gt;&lt;BR /&gt;do year = &lt;STRONG&gt;2016&lt;/STRONG&gt; to &lt;STRONG&gt;2018&lt;/STRONG&gt;;&lt;BR /&gt;do k=&lt;STRONG&gt;1&lt;/STRONG&gt; to &lt;STRONG&gt;3&lt;/STRONG&gt;;&lt;BR /&gt;new{k} = old{k, year};&lt;BR /&gt;end;&lt;BR /&gt;output;&lt;BR /&gt;end;&lt;BR /&gt;keep ID Year Set Track Let;&lt;BR /&gt;&lt;STRONG&gt;run;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I would really appreciate your advice here - thank you very much for your input.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I wish you a nice day&lt;/P&gt;
&lt;P&gt;Kevin&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 05 Dec 2021 19:07:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Transpose-wide-datasets-to-long-datasets/m-p/784200#M250213</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2021-12-05T19:07:17Z</dc:date>
    </item>
    <item>
      <title>Re: Transpose wide datasets to long datasets</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Transpose-wide-datasets-to-long-datasets/m-p/784207#M250218</link>
      <description>&lt;P&gt;Why not just transpose it twice.&lt;/P&gt;
&lt;P&gt;First convert from your wide to a TALL format.&lt;/P&gt;
&lt;P&gt;Then move the YEAR from the name into its own variable.&lt;/P&gt;
&lt;P&gt;Re-sort by ID and YEAR.&lt;/P&gt;
&lt;P&gt;Then transpose form TALL into your desired format.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  input ID set_FY2016-set_FY2018 track_FY2016-track_FY2018 Let_FY2016-Let_FY2018;
cards;
1 10 20 5 12 212 3 120 204 53
2 8 0 10 4 3 32 82 3 103
3 5 40 0 55 44 3 523 440 12
;

proc transpose data=have out=tall;
  by id;
run;

data tall;
  set tall ;
  lname=length(_name_);
  year = input(substr(_name_,lname-3),32.);
  _name_ = substr(_name_,1,lname-7);
run;

proc sort;
  by id year ;
run;

proc transpose data=tall out=want(drop=_name_);
  by id year;
  id _name_;
  var col1;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Result&lt;/P&gt;
&lt;PRE&gt;Obs    ID    year    set    track    Let

 1      1    2016     10      12     120
 2      1    2017     20     212     204
 3      1    2018      5       3      53
 4      2    2016      8       4      82
 5      2    2017      0       3       3
 6      2    2018     10      32     103
 7      3    2016      5      55     523
 8      3    2017     40      44     440
 9      3    2018      0       3      12
&lt;/PRE&gt;</description>
      <pubDate>Sun, 05 Dec 2021 20:43:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Transpose-wide-datasets-to-long-datasets/m-p/784207#M250218</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2021-12-05T20:43:06Z</dc:date>
    </item>
    <item>
      <title>Re: Transpose wide datasets to long datasets</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Transpose-wide-datasets-to-long-datasets/m-p/784208#M250219</link>
      <description>&lt;P&gt;Side comment:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Unfortunately, it returns an error message (maybe a macro can be used?):&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;No. If you can't get code to work without a macro and without a macro variable, then it also will not work in a macro. The solution is to fix the code, not turn it into a macro. Others have explained how to fix the code.&lt;/P&gt;</description>
      <pubDate>Sun, 05 Dec 2021 21:07:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Transpose-wide-datasets-to-long-datasets/m-p/784208#M250219</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2021-12-05T21:07:35Z</dc:date>
    </item>
  </channel>
</rss>

