<?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 transposing data in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/transposing-data/m-p/571334#M161167</link>
    <description>&lt;P&gt;Dear All!&lt;/P&gt;
&lt;P&gt;I need&amp;nbsp; help. I do not know how to&amp;nbsp;find the solution.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have table1 and table2 and I need to transpose&amp;nbsp;table1 and table2&amp;nbsp;to table3 &amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data table1;&lt;/P&gt;
&lt;P&gt;infile cards;&lt;/P&gt;
&lt;P&gt;informat account $3. date ddmmyy10. sum 8.;&lt;/P&gt;
&lt;P&gt;input account--sum;&lt;/P&gt;
&lt;P&gt;cards;&lt;/P&gt;
&lt;P&gt;A01 30/05/2019 100&lt;/P&gt;
&lt;P&gt;A01 20/06/2019 110&lt;/P&gt;
&lt;P&gt;A01 27/06/2019 120&lt;/P&gt;
&lt;P&gt;A02 30/05/2019 10&lt;/P&gt;
&lt;P&gt;A02 20/06/2019 20&lt;/P&gt;
&lt;P&gt;A02 27/06/2019 30&lt;/P&gt;
&lt;P&gt;;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data table2;&lt;/P&gt;
&lt;P&gt;infile cards;&lt;/P&gt;
&lt;P&gt;informat account $3. date ddmmyy10. segment $2. koef 8.;&lt;/P&gt;
&lt;P&gt;input account--koef;&lt;/P&gt;
&lt;P&gt;cards;&lt;/P&gt;
&lt;P&gt;A01 30/05/2019 RB 0.26&lt;/P&gt;
&lt;P&gt;A01 30/05/2019 KB 0.74&lt;/P&gt;
&lt;P&gt;A02 30/05/2019 RB 0.34&lt;/P&gt;
&lt;P&gt;A02 30/05/2019 KB 0.66&lt;/P&gt;
&lt;P&gt;A01 20/06/2019 RB 0.26&lt;/P&gt;
&lt;P&gt;A01 20/06/2019 KB 0.74&lt;/P&gt;
&lt;P&gt;A02 20/06/2019 RB 0.34&lt;/P&gt;
&lt;P&gt;A02 20/06/2019 KB 0.66&lt;/P&gt;
&lt;P&gt;A01 27/06/2019 RB 0.26&lt;/P&gt;
&lt;P&gt;A01 27/06/2019 KB 0.74&lt;/P&gt;
&lt;P&gt;A02 27/06/2019 RB 0.34&lt;/P&gt;
&lt;P&gt;A02 27/06/2019 KB 0.66&lt;/P&gt;
&lt;P&gt;;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This is what I need:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data table3;&lt;/P&gt;
&lt;P&gt;infile cards;&lt;/P&gt;
&lt;P&gt;informat account $3. sum1-sum3 8. koef1-koef3 8. segment1-segment3 $2.;&lt;/P&gt;
&lt;P&gt;input account--segment3;&lt;/P&gt;
&lt;P&gt;cards;&lt;/P&gt;
&lt;P&gt;A01 100 110 120 0.26 0.26 0.26 RB RB RB&lt;/P&gt;
&lt;P&gt;A01 100&amp;nbsp;110&amp;nbsp;120 0.74&amp;nbsp;0.74 0.74 KB KB KB&lt;/P&gt;
&lt;P&gt;A02 10 20 30 0.34 0.34 0.34 RB RB RB&lt;/P&gt;
&lt;P&gt;A02 10 20 30 0.66 0.66 0.66 KB KB KB&lt;/P&gt;
&lt;P&gt;;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you&lt;/P&gt;
&lt;P&gt;BR Oleg&lt;/P&gt;</description>
    <pubDate>Fri, 05 Jul 2019 08:48:49 GMT</pubDate>
    <dc:creator>Oleg_L</dc:creator>
    <dc:date>2019-07-05T08:48:49Z</dc:date>
    <item>
      <title>transposing data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/transposing-data/m-p/571334#M161167</link>
      <description>&lt;P&gt;Dear All!&lt;/P&gt;
&lt;P&gt;I need&amp;nbsp; help. I do not know how to&amp;nbsp;find the solution.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have table1 and table2 and I need to transpose&amp;nbsp;table1 and table2&amp;nbsp;to table3 &amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data table1;&lt;/P&gt;
&lt;P&gt;infile cards;&lt;/P&gt;
&lt;P&gt;informat account $3. date ddmmyy10. sum 8.;&lt;/P&gt;
&lt;P&gt;input account--sum;&lt;/P&gt;
&lt;P&gt;cards;&lt;/P&gt;
&lt;P&gt;A01 30/05/2019 100&lt;/P&gt;
&lt;P&gt;A01 20/06/2019 110&lt;/P&gt;
&lt;P&gt;A01 27/06/2019 120&lt;/P&gt;
&lt;P&gt;A02 30/05/2019 10&lt;/P&gt;
&lt;P&gt;A02 20/06/2019 20&lt;/P&gt;
&lt;P&gt;A02 27/06/2019 30&lt;/P&gt;
&lt;P&gt;;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data table2;&lt;/P&gt;
&lt;P&gt;infile cards;&lt;/P&gt;
&lt;P&gt;informat account $3. date ddmmyy10. segment $2. koef 8.;&lt;/P&gt;
&lt;P&gt;input account--koef;&lt;/P&gt;
&lt;P&gt;cards;&lt;/P&gt;
&lt;P&gt;A01 30/05/2019 RB 0.26&lt;/P&gt;
&lt;P&gt;A01 30/05/2019 KB 0.74&lt;/P&gt;
&lt;P&gt;A02 30/05/2019 RB 0.34&lt;/P&gt;
&lt;P&gt;A02 30/05/2019 KB 0.66&lt;/P&gt;
&lt;P&gt;A01 20/06/2019 RB 0.26&lt;/P&gt;
&lt;P&gt;A01 20/06/2019 KB 0.74&lt;/P&gt;
&lt;P&gt;A02 20/06/2019 RB 0.34&lt;/P&gt;
&lt;P&gt;A02 20/06/2019 KB 0.66&lt;/P&gt;
&lt;P&gt;A01 27/06/2019 RB 0.26&lt;/P&gt;
&lt;P&gt;A01 27/06/2019 KB 0.74&lt;/P&gt;
&lt;P&gt;A02 27/06/2019 RB 0.34&lt;/P&gt;
&lt;P&gt;A02 27/06/2019 KB 0.66&lt;/P&gt;
&lt;P&gt;;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This is what I need:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data table3;&lt;/P&gt;
&lt;P&gt;infile cards;&lt;/P&gt;
&lt;P&gt;informat account $3. sum1-sum3 8. koef1-koef3 8. segment1-segment3 $2.;&lt;/P&gt;
&lt;P&gt;input account--segment3;&lt;/P&gt;
&lt;P&gt;cards;&lt;/P&gt;
&lt;P&gt;A01 100 110 120 0.26 0.26 0.26 RB RB RB&lt;/P&gt;
&lt;P&gt;A01 100&amp;nbsp;110&amp;nbsp;120 0.74&amp;nbsp;0.74 0.74 KB KB KB&lt;/P&gt;
&lt;P&gt;A02 10 20 30 0.34 0.34 0.34 RB RB RB&lt;/P&gt;
&lt;P&gt;A02 10 20 30 0.66 0.66 0.66 KB KB KB&lt;/P&gt;
&lt;P&gt;;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you&lt;/P&gt;
&lt;P&gt;BR Oleg&lt;/P&gt;</description>
      <pubDate>Fri, 05 Jul 2019 08:48:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/transposing-data/m-p/571334#M161167</guid>
      <dc:creator>Oleg_L</dc:creator>
      <dc:date>2019-07-05T08:48:49Z</dc:date>
    </item>
    <item>
      <title>Re: transposing data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/transposing-data/m-p/571351#M161169</link>
      <description>&lt;P&gt;The solution lies on dynamically determining the BY-Group Size. For simplicity, it is assumed to be 3.&lt;/P&gt;
&lt;P&gt;The steps are:&lt;/P&gt;
&lt;P&gt;[1] sort Table1 by account and date. sort table2 by account, segment and date.&lt;/P&gt;
&lt;P&gt;[2] use double DoW loop. In the first-loop, collect the sums into an array per account.&lt;/P&gt;
&lt;P&gt;[3] In the second loop, collect segments into an array and koefs into another array.&lt;/P&gt;
&lt;P&gt;[4] When the By Group = 3 output the collected array elements.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;data table1;
infile cards;
informat account $3. date ddmmyy10. sum 8.;
input account--sum;
cards;
A01 30/05/2019 100
A01 20/06/2019 110
A01 27/06/2019 120
A02 30/05/2019 10
A02 20/06/2019 20
A02 27/06/2019 30
;
run;
proc sort data = table1 out = t1;
by account date;
run;



data table2;
infile cards;
informat account $3. date ddmmyy10. segment $2. koef 8.;
input account--koef;
cards;
A01 30/05/2019 RB 0.26
A01 30/05/2019 KB 0.74
A02 30/05/2019 RB 0.34
A02 30/05/2019 KB 0.66
A01 20/06/2019 RB 0.26
A01 20/06/2019 KB 0.74
A02 20/06/2019 RB 0.34
A02 20/06/2019 KB 0.66
A01 27/06/2019 RB 0.26
A01 27/06/2019 KB 0.74
A02 27/06/2019 RB 0.34
A02 27/06/2019 KB 0.66
;
run;

proc sort data = table2 out=tab2;
by account segment date;
run;



data want;
   do i = 1 by 1 until(last.account);
      set t1;
      by account;
      array su sum1 - sum3;
      su[i] = sum;
   end;
   do i = 1 by 1 until(last.account);
      set tab2;
      by account;
      array k koef1-koef3;
      array s $2 segment1 - segment3;
      j = mod(i,3); if j = 0 then j = 3;
      k[j] = koef;
      s[j] = segment;
      if j = 3 then output;
   end;
drop i j sum date koef segment;
run;
&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 05 Jul 2019 10:56:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/transposing-data/m-p/571351#M161169</guid>
      <dc:creator>KachiM</dc:creator>
      <dc:date>2019-07-05T10:56:57Z</dc:date>
    </item>
  </channel>
</rss>

