<?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: How to transpose multiple variables by two variables? in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/How-to-transpose-multiple-variables-by-two-variables/m-p/861867#M340415</link>
    <description>&lt;P&gt;I think you missed a line feed in your "want" example.&lt;/P&gt;
&lt;P&gt;Please provide example data as data step pasted into a text box opened on the forum with &amp;lt;/&amp;gt; icon that appears above the message window. The text box is to prevent the forum software from reformatting pasted text resulting in code that won't run.&lt;/P&gt;
&lt;P&gt;Or at least paste example data in the text box.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here's my take on this. You actually are not transposing by "two variables" but combining rows in a more complex manner. Which means it is better to start with new data set with just Id Date and the Value. THEN transpose.&lt;/P&gt;
&lt;PRE&gt;data have;
   input ID DATE :date9. DIAG1 $ DIAG2 $ DIAG3 $ DIAG4 $ DIAG5 $ ;
   format date date9.;
datalines;
1 01AUG2021 O10.2 F2.1 I9.1 Z35.0 F12.6
1 01AUG2021 T71.2 I9.1 I8.0 H13.1 L11.0
1 05SEP2021 H9.5 Z32.1 K5.8 C87.1 B9.3
1 05SEP2021 J9.0 B71.9 Z39.0 K41.1 . 
1 05SEP2021 K12.1 . . . .
2 13JUL2021 O7.1 F23.1 G5.7 . .
2 13JUL2021 T91.0 G5.7 L43.1 . .
2 13JUL2021 O7.1 . . . .
2 13JUL2021 M1.2 G5.7 T91.3 . .
2 09DEC2021 B3.1 . . . .
2 09DEC2021 J23.1 J23.4 . . .
;

data temp;
  set have;
  array d (*) diag: ;
  do i=1 to dim(d);
     if not missing(d[i]) then do;
        Value=d[i];
        output;
     end;
  end;
  keep id date value;
run;

/* actually that TEMP set may be more useful */
proc sort data=temp;
   by id date;
run;

proc transpose data=temp out=want (drop=_name_)
   prefix=Diag;
   by id date;
   var value;
run;
     
   &lt;/PRE&gt;
&lt;P&gt;Depending on exactly what you are going to do next with this data the TEMP data set above that I created may be more flexible.&lt;/P&gt;</description>
    <pubDate>Wed, 01 Mar 2023 23:36:03 GMT</pubDate>
    <dc:creator>ballardw</dc:creator>
    <dc:date>2023-03-01T23:36:03Z</dc:date>
    <item>
      <title>How to transpose multiple variables by two variables?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-transpose-multiple-variables-by-two-variables/m-p/861859#M340410</link>
      <description>&lt;P&gt;I have data set which looks like:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;ID&amp;nbsp; &amp;nbsp; &amp;nbsp; DATE&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DIAG1&amp;nbsp; &amp;nbsp;DIAG2&amp;nbsp; DIAG3&amp;nbsp; DIAG4&amp;nbsp; DIAG5&lt;/P&gt;&lt;P&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 01AUG2021&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;O10.2&amp;nbsp; &amp;nbsp; F2.1&amp;nbsp; &amp;nbsp; &amp;nbsp; I9.1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Z35.0&amp;nbsp; &amp;nbsp; F12.6&lt;/P&gt;&lt;P&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 01AUG2021&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;T71.2&amp;nbsp; &amp;nbsp; &amp;nbsp;I9.1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;I8.0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;H13.1&amp;nbsp; &amp;nbsp; L11.0&lt;/P&gt;&lt;P&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 05SEP2021&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; H9.5&amp;nbsp; &amp;nbsp; &amp;nbsp; Z32.1&amp;nbsp; &amp;nbsp; K5.8&amp;nbsp; &amp;nbsp; &amp;nbsp;C87.1&amp;nbsp; &amp;nbsp; B9.3&lt;/P&gt;&lt;P&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 05SEP2021&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; J9.0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;B71.9&amp;nbsp; &amp;nbsp; Z39.0&amp;nbsp; &amp;nbsp;K41.1&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 05SEP2021&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; K12.1&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 13JUL2021&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;O7.1&amp;nbsp; &amp;nbsp; &amp;nbsp;F23.1&amp;nbsp; &amp;nbsp; G5.7&lt;/P&gt;&lt;P&gt;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 13JUL2021&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;T91.0&amp;nbsp; &amp;nbsp; G5.7&amp;nbsp; &amp;nbsp; &amp;nbsp;L43.1&lt;/P&gt;&lt;P&gt;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 13JUL2021&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;O7.1&lt;/P&gt;&lt;P&gt;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 13 JUL2021&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; M1.2&amp;nbsp; &amp;nbsp; &amp;nbsp;G5.7&amp;nbsp; &amp;nbsp; &amp;nbsp;T91.3&lt;/P&gt;&lt;P&gt;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;09DEC2021&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; B3.1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;09DEC2021&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; J23.1&amp;nbsp; &amp;nbsp; J23.4&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I want DIAG1 to DIAG5 for each ID and date as one record. So if one ID have multiple rows for one date, I want them all the DIAG in one row&lt;/P&gt;&lt;P&gt;The output I want;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;ID DATE&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DIAG1&amp;nbsp; &amp;nbsp;DIAG2&amp;nbsp; DIAG3&amp;nbsp; DIAG4&amp;nbsp; DIAG5&amp;nbsp; DIAG6&amp;nbsp; DIAG7&amp;nbsp; DIAG8&amp;nbsp; DIAG9&amp;nbsp; DIAG10&amp;nbsp;&lt;/P&gt;&lt;P&gt;1&amp;nbsp; 01AUG2021&amp;nbsp; O10.2&amp;nbsp; &amp;nbsp; F2.1&amp;nbsp; &amp;nbsp; &amp;nbsp; I9.1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Z35.0&amp;nbsp; &amp;nbsp; F12.6&amp;nbsp; &amp;nbsp;T71.2&amp;nbsp; &amp;nbsp;I9.1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;I8.0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;H13.1&amp;nbsp; &amp;nbsp; L11.0&amp;nbsp; &amp;nbsp; 1&amp;nbsp; 05SEP2021&amp;nbsp; &amp;nbsp;H9.5&amp;nbsp; &amp;nbsp; &amp;nbsp; Z32.1&amp;nbsp; &amp;nbsp; K5.8&amp;nbsp; &amp;nbsp; &amp;nbsp;C87.1&amp;nbsp; &amp;nbsp; B9.3&amp;nbsp; &amp;nbsp; &amp;nbsp;J9.0&amp;nbsp; &amp;nbsp; &amp;nbsp;B71.9&amp;nbsp; &amp;nbsp; Z39.0&amp;nbsp; &amp;nbsp; K41.1&amp;nbsp; &amp;nbsp; K12.1&lt;/P&gt;&lt;P&gt;2&amp;nbsp; 13JUL2021&amp;nbsp; &amp;nbsp; O7.1&amp;nbsp; &amp;nbsp; &amp;nbsp;F23.1&amp;nbsp; &amp;nbsp; G5.7&amp;nbsp; &amp;nbsp; &amp;nbsp;T91.0&amp;nbsp; &amp;nbsp; G5.7&amp;nbsp; &amp;nbsp; &amp;nbsp;L43.1&amp;nbsp; &amp;nbsp;O7.1&amp;nbsp; &amp;nbsp; &amp;nbsp;M1.2&amp;nbsp; &amp;nbsp; &amp;nbsp;G5.7&amp;nbsp; &amp;nbsp; &amp;nbsp;T91.3&lt;/P&gt;&lt;P&gt;2&amp;nbsp; 09DEC2021&amp;nbsp; &amp;nbsp;B3.1&amp;nbsp; &amp;nbsp; &amp;nbsp;J23.1&amp;nbsp; &amp;nbsp; J23.4&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 01 Mar 2023 22:02:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-transpose-multiple-variables-by-two-variables/m-p/861859#M340410</guid>
      <dc:creator>abhi309</dc:creator>
      <dc:date>2023-03-01T22:02:42Z</dc:date>
    </item>
    <item>
      <title>Re: How to transpose multiple variables by two variables?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-transpose-multiple-variables-by-two-variables/m-p/861861#M340411</link>
      <description>I see the date repeated in the output line but not the headers. Can you clarify how you want the output?</description>
      <pubDate>Wed, 01 Mar 2023 22:29:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-transpose-multiple-variables-by-two-variables/m-p/861861#M340411</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2023-03-01T22:29:11Z</dc:date>
    </item>
    <item>
      <title>Re: How to transpose multiple variables by two variables?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-transpose-multiple-variables-by-two-variables/m-p/861867#M340415</link>
      <description>&lt;P&gt;I think you missed a line feed in your "want" example.&lt;/P&gt;
&lt;P&gt;Please provide example data as data step pasted into a text box opened on the forum with &amp;lt;/&amp;gt; icon that appears above the message window. The text box is to prevent the forum software from reformatting pasted text resulting in code that won't run.&lt;/P&gt;
&lt;P&gt;Or at least paste example data in the text box.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here's my take on this. You actually are not transposing by "two variables" but combining rows in a more complex manner. Which means it is better to start with new data set with just Id Date and the Value. THEN transpose.&lt;/P&gt;
&lt;PRE&gt;data have;
   input ID DATE :date9. DIAG1 $ DIAG2 $ DIAG3 $ DIAG4 $ DIAG5 $ ;
   format date date9.;
datalines;
1 01AUG2021 O10.2 F2.1 I9.1 Z35.0 F12.6
1 01AUG2021 T71.2 I9.1 I8.0 H13.1 L11.0
1 05SEP2021 H9.5 Z32.1 K5.8 C87.1 B9.3
1 05SEP2021 J9.0 B71.9 Z39.0 K41.1 . 
1 05SEP2021 K12.1 . . . .
2 13JUL2021 O7.1 F23.1 G5.7 . .
2 13JUL2021 T91.0 G5.7 L43.1 . .
2 13JUL2021 O7.1 . . . .
2 13JUL2021 M1.2 G5.7 T91.3 . .
2 09DEC2021 B3.1 . . . .
2 09DEC2021 J23.1 J23.4 . . .
;

data temp;
  set have;
  array d (*) diag: ;
  do i=1 to dim(d);
     if not missing(d[i]) then do;
        Value=d[i];
        output;
     end;
  end;
  keep id date value;
run;

/* actually that TEMP set may be more useful */
proc sort data=temp;
   by id date;
run;

proc transpose data=temp out=want (drop=_name_)
   prefix=Diag;
   by id date;
   var value;
run;
     
   &lt;/PRE&gt;
&lt;P&gt;Depending on exactly what you are going to do next with this data the TEMP data set above that I created may be more flexible.&lt;/P&gt;</description>
      <pubDate>Wed, 01 Mar 2023 23:36:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-transpose-multiple-variables-by-two-variables/m-p/861867#M340415</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2023-03-01T23:36:03Z</dc:date>
    </item>
    <item>
      <title>Re: How to transpose multiple variables by two variables?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-transpose-multiple-variables-by-two-variables/m-p/861878#M340418</link>
      <description>&lt;P&gt;Thank you so much that worked.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 02 Mar 2023 01:01:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-transpose-multiple-variables-by-two-variables/m-p/861878#M340418</guid>
      <dc:creator>abhi309</dc:creator>
      <dc:date>2023-03-02T01:01:21Z</dc:date>
    </item>
  </channel>
</rss>

