<?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: From on variable to a multiple in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/From-one-variable-to-a-multiple/m-p/453170#M114481</link>
    <description>&lt;P&gt;That is by design.&amp;nbsp; It is never a good idea to work with transposed data within programming.&amp;nbsp; Industry standards - CDISC - are normalised also.&amp;nbsp; The reason is that any transposed dataset requires far more programming and messy code to work with than normalised, and at the end of the day if you need a transposed dataset, then it is just a proc transpose step away.&amp;nbsp; So from my original code:&lt;/P&gt;
&lt;PRE&gt;data want;
  set have; 
  ord=0;
  do i=1 to countw(diag,"#") by 3;
    ord=ord+1;
    date=input(scan(diag,i,"#"),ddmmyy10.);
    diagnosis=scan(diag,i+1,"#");
    type=scan(diag,i+3,"#");
    output;
  end;
run;
proc transpose data=want out=tran1 prefix=d1date;
  by ...;
  var date;
  id ord;
run;
proc transpose data=want out=tran2 prefix=d1diagnosis;
  by ...;
  var date;
  id ord;
run;
proc transpose data=want out=tran3 prefix=d1type;
  by ...;
  var date;
  id ord;
run;
data final;
  merge tran1 tran2 tran3;
  by ...;
run;&lt;/PRE&gt;
&lt;P&gt;Note I have put elipses in the by clause, as you have not shown any other variables so I don't know these.&lt;/P&gt;
&lt;P&gt;Again, I really advise you not to transpose any data unless it is really needed - i.e. in a final output report or something - no good will come of it.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Wed, 11 Apr 2018 12:27:58 GMT</pubDate>
    <dc:creator>RW9</dc:creator>
    <dc:date>2018-04-11T12:27:58Z</dc:date>
    <item>
      <title>From one variable to a multiple</title>
      <link>https://communities.sas.com/t5/SAS-Programming/From-one-variable-to-a-multiple/m-p/453121#M114456</link>
      <description>&lt;P&gt;Dear Experts&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have a question regarding making a single variable into multiple variables&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have a variable (diagnoses1) that is defined in the following manor&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;date#diagnosis#typeofdiagnosis#date#diagnosis#typeofdiagnosis#...... and these pairs&amp;nbsp;can&amp;nbsp;be replicated for a maximum of&amp;nbsp;100 times, but I dont know exactly how many times for the individual patient;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The dates has the following format dd/mm/yyyy; The diagnosis is&amp;nbsp;a stringvariable and the type of diagnosis is also a string variable.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So in real life an example could be&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;01/01/2001#df100#H#01/02/2001#df200#H#01/03/2001#...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;What I would like is the following variables&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;d1date1 d1diagnosis1 d1type1&lt;/P&gt;
&lt;P&gt;d1date2 d1diagnosis2 d1type2&lt;/P&gt;
&lt;P&gt;...... for as many as there are in the initial variable diagnoses1.&lt;BR /&gt;&lt;BR /&gt;I hope this makes sence.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I will look forward to seeing your suggestions&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Regards&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Solvej&lt;/P&gt;</description>
      <pubDate>Wed, 11 Apr 2018 17:31:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/From-one-variable-to-a-multiple/m-p/453121#M114456</guid>
      <dc:creator>Solvej</dc:creator>
      <dc:date>2018-04-11T17:31:31Z</dc:date>
    </item>
    <item>
      <title>Re: From on variable to a multiple</title>
      <link>https://communities.sas.com/t5/SAS-Programming/From-one-variable-to-a-multiple/m-p/453125#M114460</link>
      <description>&lt;P&gt;Are the data items always present?&amp;nbsp; if so:&lt;/P&gt;
&lt;PRE&gt;data want;
  set have;
  do i=1 to countw(diag,"&lt;SPAN&gt;#&lt;/SPAN&gt;") by 3;
    date=input(scan(diag,i,"&lt;SPAN&gt;#&lt;/SPAN&gt;"),ddmmyy10.);
    diagnosis=scan(diag,i+1,"&lt;SPAN&gt;#&lt;/SPAN&gt;");
    type=scan(diag,i+3,"&lt;SPAN&gt;#&lt;/SPAN&gt;");
    output;
  end;
run;
    &lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;This will loop over the text and for each three items create the variables and output.&amp;nbsp; Note, if there isn't always 3 then you will get errors.&amp;nbsp; Post test data in the form of a datastep and required output, otherwise we have to guess.&lt;/P&gt;</description>
      <pubDate>Wed, 11 Apr 2018 10:07:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/From-one-variable-to-a-multiple/m-p/453125#M114460</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2018-04-11T10:07:00Z</dc:date>
    </item>
    <item>
      <title>Re: From on variable to a multiple</title>
      <link>https://communities.sas.com/t5/SAS-Programming/From-one-variable-to-a-multiple/m-p/453141#M114466</link>
      <description>&lt;P&gt;Dear RW9&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;thank you for your answer.&lt;/P&gt;&lt;P&gt;It seems to be working.&amp;nbsp;It does however produce a multiple of lines for each set of three.&amp;nbsp;Can this&amp;nbsp;be fixed in the statement or will&amp;nbsp;I have to reshape in order to only have one line per initial variable?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This is what I have now&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Diagnoses1&lt;/TD&gt;&lt;TD&gt;date1&lt;/TD&gt;&lt;TD&gt;diagnosis&lt;/TD&gt;&lt;TD&gt;type&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;01/01/2001#df100#H#01/02/2001#df200#H#01/03/2001#...&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;01-01-2001&lt;/TD&gt;&lt;TD&gt;df100&lt;/TD&gt;&lt;TD&gt;H&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;01/01/2001#df100#H#01/02/2001#df200#H#01/03/2001#...&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;01-02-2001&lt;/TD&gt;&lt;TD&gt;df200&lt;/TD&gt;&lt;TD&gt;H&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;01/01/2001#df100#H#01/02/2001#df200#H#01/03/2001#...&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;01-03-2001&lt;/TD&gt;&lt;TD&gt;..&lt;/TD&gt;&lt;TD&gt;..&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;What I would like&lt;/TD&gt;&lt;TD&gt;D1date1&lt;/TD&gt;&lt;TD&gt;D1diagnosis1&lt;/TD&gt;&lt;TD&gt;D1type1&lt;/TD&gt;&lt;TD&gt;D1date2&lt;/TD&gt;&lt;TD&gt;D1diagnosis2&lt;/TD&gt;&lt;TD&gt;D1type2&lt;/TD&gt;&lt;TD&gt;D1date3&lt;/TD&gt;&lt;TD&gt;D1diagnosis3&lt;/TD&gt;&lt;TD&gt;1type3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;01/01/2001#df100#H#01/02/2001#df200#H#01/03/2001#...&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;01-01-2001&lt;/TD&gt;&lt;TD&gt;df100&lt;/TD&gt;&lt;TD&gt;H&lt;/TD&gt;&lt;TD&gt;01-02-2001&lt;/TD&gt;&lt;TD&gt;df200&lt;/TD&gt;&lt;TD&gt;H&lt;/TD&gt;&lt;TD&gt;01-03-2001&lt;/TD&gt;&lt;TD&gt;..&lt;/TD&gt;&lt;TD&gt;..&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Kind regards&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Solvej&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 11 Apr 2018 11:16:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/From-one-variable-to-a-multiple/m-p/453141#M114466</guid>
      <dc:creator>Solvej</dc:creator>
      <dc:date>2018-04-11T11:16:45Z</dc:date>
    </item>
    <item>
      <title>Re: From on variable to a multiple</title>
      <link>https://communities.sas.com/t5/SAS-Programming/From-one-variable-to-a-multiple/m-p/453144#M114467</link>
      <description>&lt;P&gt;Don't do that. Wide datasets are inherently harder to handle than long ones. By-group processing is easier than handling arrays, especially when the number of items for a group is not known beforehand.&lt;/P&gt;</description>
      <pubDate>Wed, 11 Apr 2018 11:23:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/From-one-variable-to-a-multiple/m-p/453144#M114467</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2018-04-11T11:23:32Z</dc:date>
    </item>
    <item>
      <title>Re: From on variable to a multiple</title>
      <link>https://communities.sas.com/t5/SAS-Programming/From-one-variable-to-a-multiple/m-p/453146#M114469</link>
      <description>&lt;P&gt;Dear KurtBremser&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I agree however for this specific task it would be very helpful onwards to have one line per patient.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Solvej&lt;/P&gt;</description>
      <pubDate>Wed, 11 Apr 2018 11:25:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/From-one-variable-to-a-multiple/m-p/453146#M114469</guid>
      <dc:creator>Solvej</dc:creator>
      <dc:date>2018-04-11T11:25:22Z</dc:date>
    </item>
    <item>
      <title>Re: From on variable to a multiple</title>
      <link>https://communities.sas.com/t5/SAS-Programming/From-one-variable-to-a-multiple/m-p/453170#M114481</link>
      <description>&lt;P&gt;That is by design.&amp;nbsp; It is never a good idea to work with transposed data within programming.&amp;nbsp; Industry standards - CDISC - are normalised also.&amp;nbsp; The reason is that any transposed dataset requires far more programming and messy code to work with than normalised, and at the end of the day if you need a transposed dataset, then it is just a proc transpose step away.&amp;nbsp; So from my original code:&lt;/P&gt;
&lt;PRE&gt;data want;
  set have; 
  ord=0;
  do i=1 to countw(diag,"#") by 3;
    ord=ord+1;
    date=input(scan(diag,i,"#"),ddmmyy10.);
    diagnosis=scan(diag,i+1,"#");
    type=scan(diag,i+3,"#");
    output;
  end;
run;
proc transpose data=want out=tran1 prefix=d1date;
  by ...;
  var date;
  id ord;
run;
proc transpose data=want out=tran2 prefix=d1diagnosis;
  by ...;
  var date;
  id ord;
run;
proc transpose data=want out=tran3 prefix=d1type;
  by ...;
  var date;
  id ord;
run;
data final;
  merge tran1 tran2 tran3;
  by ...;
run;&lt;/PRE&gt;
&lt;P&gt;Note I have put elipses in the by clause, as you have not shown any other variables so I don't know these.&lt;/P&gt;
&lt;P&gt;Again, I really advise you not to transpose any data unless it is really needed - i.e. in a final output report or something - no good will come of it.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 11 Apr 2018 12:27:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/From-one-variable-to-a-multiple/m-p/453170#M114481</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2018-04-11T12:27:58Z</dc:date>
    </item>
    <item>
      <title>Re: From on variable to a multiple</title>
      <link>https://communities.sas.com/t5/SAS-Programming/From-one-variable-to-a-multiple/m-p/453302#M114534</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/108044"&gt;@Solvej&lt;/a&gt; wrote:&lt;BR /&gt;
&lt;P&gt;Dear KurtBremser&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I agree however for this specific task it would be very helpful onwards to have one line per patient.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Regards&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Solvej&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;No, it really doesn't. Having worked with health care data for years...it really really does not help. There are ways to account for things in a long format that is MUCH easier - once you learn it. Otherwise you'll be stuck using a lot of array loops.&lt;/P&gt;</description>
      <pubDate>Wed, 11 Apr 2018 17:21:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/From-one-variable-to-a-multiple/m-p/453302#M114534</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2018-04-11T17:21:08Z</dc:date>
    </item>
  </channel>
</rss>

