<?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 roll up data from different columns into one row? in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/How-to-roll-up-data-from-different-columns-into-one-row/m-p/423969#M104331</link>
    <description>&lt;P&gt;I think the following also does what you want and is easier to code:&lt;/P&gt;
&lt;PRE&gt;data want (drop=year code rate);
  update have (obs=0) have;
  by id;
run;
&lt;/PRE&gt;
&lt;P&gt;Art, CEO, AnalystFinder.com&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 28 Dec 2017 21:56:25 GMT</pubDate>
    <dc:creator>art297</dc:creator>
    <dc:date>2017-12-28T21:56:25Z</dc:date>
    <item>
      <title>How to roll up data from different columns into one row?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-roll-up-data-from-different-columns-into-one-row/m-p/423963#M104326</link>
      <description>&lt;P&gt;Hi, I've come across this task where I want to transfer my data in this way:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;My input data is structured like this:&lt;/STRONG&gt;&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Year&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;id&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Code&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Rate&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;A_15&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;A_16&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;B_15&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;B_16&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2015&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;0.23&lt;/TD&gt;&lt;TD&gt;0.23&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;2016&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;0.22&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;0.22&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;2015&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;0.78&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;0.78&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2016&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;0.79&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;0.79&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2015&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;0.36&lt;/TD&gt;&lt;TD&gt;0.36&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;2016&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;0.19&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;0.19&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;2015&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;0.89&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;0.89&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2016&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;0.83&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;0.83&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2015&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;0.31&lt;/TD&gt;&lt;TD&gt;0.31&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;2016&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;0.34&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;0.34&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;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;I want to re-structure my data to look like this, I want each id has only one row, and row up multiple rows into one if it's under the same id - So year and code is now reflected in the column name and rate is the value in the corresponding column&lt;/STRONG&gt;&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;id&lt;/TD&gt;&lt;TD&gt;A_15&lt;/TD&gt;&lt;TD&gt;A_16&lt;/TD&gt;&lt;TD&gt;B_15&lt;/TD&gt;&lt;TD&gt;B_16&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0.23&lt;/TD&gt;&lt;TD&gt;0.22&lt;/TD&gt;&lt;TD&gt;0.78&lt;/TD&gt;&lt;TD&gt;0.79&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;0.36&lt;/TD&gt;&lt;TD&gt;0.19&lt;/TD&gt;&lt;TD&gt;0.89&lt;/TD&gt;&lt;TD&gt;0.83&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;0.31&lt;/TD&gt;&lt;TD&gt;0.34&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;I haven't figured out a way to do it tho, so any suggestion will be greatly appreciated!&lt;/P&gt;&lt;P&gt;Thank you for your time&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 28 Dec 2017 21:32:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-roll-up-data-from-different-columns-into-one-row/m-p/423963#M104326</guid>
      <dc:creator>LisaYIN9309</dc:creator>
      <dc:date>2017-12-28T21:32:30Z</dc:date>
    </item>
    <item>
      <title>Re: How to roll up data from different columns into one row?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-roll-up-data-from-different-columns-into-one-row/m-p/423965#M104327</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Please try this.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;proc sql;&lt;BR /&gt;create table want as&lt;BR /&gt;select id, max(A_15) as A_15, max(A_16) as A_16, max(B_15) as B_15, max(B_16) as B_16 from have&lt;BR /&gt;group by id;&lt;BR /&gt;quit;&lt;/P&gt;</description>
      <pubDate>Thu, 28 Dec 2017 21:44:39 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-roll-up-data-from-different-columns-into-one-row/m-p/423965#M104327</guid>
      <dc:creator>stat_sas</dc:creator>
      <dc:date>2017-12-28T21:44:39Z</dc:date>
    </item>
    <item>
      <title>Re: How to roll up data from different columns into one row?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-roll-up-data-from-different-columns-into-one-row/m-p/423967#M104329</link>
      <description>&lt;P&gt;Thank you so much&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/42042"&gt;@stat_sas&lt;/a&gt;&amp;nbsp;for your prompt reply, it worked!!!&lt;/P&gt;</description>
      <pubDate>Thu, 28 Dec 2017 21:49:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-roll-up-data-from-different-columns-into-one-row/m-p/423967#M104329</guid>
      <dc:creator>LisaYIN9309</dc:creator>
      <dc:date>2017-12-28T21:49:16Z</dc:date>
    </item>
    <item>
      <title>Re: How to roll up data from different columns into one row?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-roll-up-data-from-different-columns-into-one-row/m-p/423968#M104330</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
update have(obs=0 keep=(id a_15 a_16 b_15 b_16)) have (keep=(id a_15 a_16 b_15 b_16));

by id;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;You can use the UPDATE statement with OBS=0 trick to get this easily.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I wouldn't recommend it though, it would be better IMO to reformat your data as:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
set have;

Value = coalesce(a_15, a_16, b_15, b_16);

drop a_15 a_16 b_15 b_16;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;In this format you're keeping 'data' in your column names which is hard to make it dynamic. The code&amp;nbsp;and the year are in the variable name.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 28 Dec 2017 21:53:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-roll-up-data-from-different-columns-into-one-row/m-p/423968#M104330</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2017-12-28T21:53:20Z</dc:date>
    </item>
    <item>
      <title>Re: How to roll up data from different columns into one row?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-roll-up-data-from-different-columns-into-one-row/m-p/423969#M104331</link>
      <description>&lt;P&gt;I think the following also does what you want and is easier to code:&lt;/P&gt;
&lt;PRE&gt;data want (drop=year code rate);
  update have (obs=0) have;
  by id;
run;
&lt;/PRE&gt;
&lt;P&gt;Art, CEO, AnalystFinder.com&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 28 Dec 2017 21:56:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-roll-up-data-from-different-columns-into-one-row/m-p/423969#M104331</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2017-12-28T21:56:25Z</dc:date>
    </item>
    <item>
      <title>Re: How to roll up data from different columns into one row?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-roll-up-data-from-different-columns-into-one-row/m-p/423971#M104333</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;&amp;nbsp; I would use either PROC REPORT or PROC TABULATE. Assuming you have the data in a file called WORK.TESTDATA, then something like this would work:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
proc report data=testdata;
  column id A_15 A_16 B_15 B_16;
  define id / group;
  define a_15 / sum;
  define A_16 / sum;
  define b_15 / sum;
  define b_16 / sum;
run;
  
proc tabulate data=testdata;
  class id;
  var A_15 A_16 B_15 B_16;
  table id,
        A_15 A_16 B_15 B_16;
  keylabel sum=' ';
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;cynthia&lt;/P&gt;</description>
      <pubDate>Thu, 28 Dec 2017 21:59:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-roll-up-data-from-different-columns-into-one-row/m-p/423971#M104333</guid>
      <dc:creator>Cynthia_sas</dc:creator>
      <dc:date>2017-12-28T21:59:54Z</dc:date>
    </item>
  </channel>
</rss>

