<?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 Stack data from Multiple columns to multiple rows by ID in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/How-to-Stack-data-from-Multiple-columns-to-multiple-rows-by-ID/m-p/887755#M350728</link>
    <description>&lt;P&gt;UNTESTED CODE&lt;/P&gt;
&lt;P&gt;If you want tested code, we cannot work from screen captures or Excel data copied into your message. We need data from working SAS data step code (&lt;A href="https://blogs.sas.com/content/sastraining/2016/03/11/jedi-sas-tricks-data-to-data-step-macro/" target="_self"&gt;examples and instructions&lt;/A&gt;).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;/* UNTESTED CODE */
/* UNTESTED CODE */
data want;
    length condition $ 8;
    set have;
    array cond cond_1-cond_4;
    array admin administration_1_dt administration_2_dt administration_3_dt administration_4_dt;
    do i=1 to dim(cond);
        if cond(i)='Yes' then do;
            condition=vname(cond(i));
            administration_dt=admin(i);
            output;
        end;
    end;
    keep subject condition administration_dt;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Thu, 03 Aug 2023 16:42:56 GMT</pubDate>
    <dc:creator>PaigeMiller</dc:creator>
    <dc:date>2023-08-03T16:42:56Z</dc:date>
    <item>
      <title>How to Stack data from Multiple columns to multiple rows by ID</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-Stack-data-from-Multiple-columns-to-multiple-rows-by-ID/m-p/887749#M350725</link>
      <description>&lt;P&gt;Hi Community,&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I need your help with below requirement. Working on SAS Base 9.4. I don't have a SAS Code yet. Not sure where to start.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have the raw dataset in the below format.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Subject&lt;/TD&gt;&lt;TD&gt;Cond_1&lt;/TD&gt;&lt;TD&gt;Administration_1_Dt&lt;/TD&gt;&lt;TD&gt;Cond_2&lt;/TD&gt;&lt;TD&gt;Administration_2_Dt&lt;/TD&gt;&lt;TD&gt;Cond_3&lt;/TD&gt;&lt;TD&gt;Administration_3_Dt&lt;/TD&gt;&lt;TD&gt;Cond_4&lt;/TD&gt;&lt;TD&gt;Administration_4_Dt&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;TD&gt;22-Jan-22&lt;/TD&gt;&lt;TD&gt;No&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;No&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;TD&gt;4-Oct-21&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;TD&gt;2-Jun-22&lt;/TD&gt;&lt;TD&gt;No&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;No&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;TD&gt;21-Jul-22&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;For all the ones that have Condition as "Yes" I need to create a table that looks like below.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Output:&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Subject&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;Condition&lt;/TD&gt;&lt;TD&gt;Administration_Dt&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;Cond_1&lt;/TD&gt;&lt;TD&gt;22-Jan-22&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;Cond_4&lt;/TD&gt;&lt;TD&gt;4-Oct-21&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;Cond_1&lt;/TD&gt;&lt;TD&gt;2-Jun-22&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;Cond_4&lt;/TD&gt;&lt;TD&gt;21-Jul-22&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any help is appreciated. Thank your or much for your time.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 03 Aug 2023 16:25:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-Stack-data-from-Multiple-columns-to-multiple-rows-by-ID/m-p/887749#M350725</guid>
      <dc:creator>shasank</dc:creator>
      <dc:date>2023-08-03T16:25:55Z</dc:date>
    </item>
    <item>
      <title>Re: How to Stack data from Multiple columns to multiple rows by ID</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-Stack-data-from-Multiple-columns-to-multiple-rows-by-ID/m-p/887755#M350728</link>
      <description>&lt;P&gt;UNTESTED CODE&lt;/P&gt;
&lt;P&gt;If you want tested code, we cannot work from screen captures or Excel data copied into your message. We need data from working SAS data step code (&lt;A href="https://blogs.sas.com/content/sastraining/2016/03/11/jedi-sas-tricks-data-to-data-step-macro/" target="_self"&gt;examples and instructions&lt;/A&gt;).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;/* UNTESTED CODE */
/* UNTESTED CODE */
data want;
    length condition $ 8;
    set have;
    array cond cond_1-cond_4;
    array admin administration_1_dt administration_2_dt administration_3_dt administration_4_dt;
    do i=1 to dim(cond);
        if cond(i)='Yes' then do;
            condition=vname(cond(i));
            administration_dt=admin(i);
            output;
        end;
    end;
    keep subject condition administration_dt;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 03 Aug 2023 16:42:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-Stack-data-from-Multiple-columns-to-multiple-rows-by-ID/m-p/887755#M350728</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2023-08-03T16:42:56Z</dc:date>
    </item>
    <item>
      <title>Re: How to Stack data from Multiple columns to multiple rows by ID</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-Stack-data-from-Multiple-columns-to-multiple-rows-by-ID/m-p/887816#M350752</link>
      <description>&lt;P&gt;As&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/10892"&gt;@PaigeMiller&lt;/a&gt;&amp;nbsp;said.&amp;nbsp; No sample data in a working data step means the code below is untested:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
  set have (keep=subject cond_1 administration_1_dt rename=(cond_1=condition administration_1_dt=administration_dt))
      have (keep=subject cond_2 administration_2_dt rename=(cond_2=condition administration_2_dt=administration_dt))
      have (keep=subject cond_3 administration_3_dt rename=(cond_3=condition administration_3_dt=administration_dt))
      have (keep=subject cond_4 administration_4_dt rename=(cond_4=condition administration_4_dt=administration_dt)) ;
  by subject;
  where condition='Yes';
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Edit note: Corrected above to remove extraneous "SET"s.&lt;/P&gt;</description>
      <pubDate>Fri, 04 Aug 2023 19:40:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-Stack-data-from-Multiple-columns-to-multiple-rows-by-ID/m-p/887816#M350752</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2023-08-04T19:40:33Z</dc:date>
    </item>
    <item>
      <title>Re: How to Stack data from Multiple columns to multiple rows by ID</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-Stack-data-from-Multiple-columns-to-multiple-rows-by-ID/m-p/887832#M350758</link>
      <description>&lt;P&gt;I would use the code suggested by &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/10892"&gt;@PaigeMiller&lt;/a&gt; with some minor modifications, but you could use proc transpose twice followed by a merge, too.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc transpose 
      data= work.have 
      name= Condition
      out= work.cond_transposed(rename= (Col1 = CondValue) where= (CondValue = 'Yes'))
   ;
   by Subject;
   var Cond:;
run;

proc transpose 
      data= work.have 
      name= Admin
      out= work.admin_transposed(drop= Admin rename= (Col1 = Administration_Dt) where= (not missing(Administration_Dt))) 
   ;
   by Subject;
   var Administration:;
run;

data work.want;
   merge work.cond_transposed(drop= CondValue)
      work.admin_transposed
   ;
   by Subject;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 04 Aug 2023 06:50:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-Stack-data-from-Multiple-columns-to-multiple-rows-by-ID/m-p/887832#M350758</guid>
      <dc:creator>andreas_lds</dc:creator>
      <dc:date>2023-08-04T06:50:31Z</dc:date>
    </item>
  </channel>
</rss>

