<?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 Proc tabulate : create extra column with subtotals in ODS and Base Reporting</title>
    <link>https://communities.sas.com/t5/ODS-and-Base-Reporting/Proc-tabulate-create-extra-column-with-subtotals/m-p/248216#M15217</link>
    <description>&lt;P&gt;Hi&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I created a report on a simple dataset using tabulate.&lt;/P&gt;
&lt;P&gt;Now I want to add a column with subtotals.&lt;/P&gt;
&lt;P&gt;The subtotal needs to be grouped based on the first position of the valuees in the first column.&lt;/P&gt;
&lt;P&gt;I can create an extra variable in my dataset with the result.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="446"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="114"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="76"&gt;
&lt;P&gt;2014&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="128"&gt;
&lt;P&gt;2015&lt;/P&gt;
&lt;/TD&gt;
&lt;TD colspan="2" width="128"&gt;
&lt;P&gt;Totaal&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="114"&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;A1 &lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="76"&gt;
&lt;P&gt;0&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="128"&gt;
&lt;P&gt;13&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;13&lt;/P&gt;
&lt;/TD&gt;
&lt;TD rowspan="2" width="64"&gt;
&lt;P&gt;13&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="114"&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;A2 &lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="76"&gt;
&lt;P&gt;0&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="128"&gt;
&lt;P&gt;0&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;0&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="114"&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;B1 &lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="76"&gt;
&lt;P&gt;2&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="128"&gt;
&lt;P&gt;18&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;20&lt;/P&gt;
&lt;/TD&gt;
&lt;TD rowspan="2" width="64"&gt;
&lt;P&gt;25&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="114"&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;B2 &lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="76"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="128"&gt;
&lt;P&gt;4&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;5&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="114"&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;C1&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="76"&gt;
&lt;P&gt;6&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="128"&gt;
&lt;P&gt;18&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;24&lt;/P&gt;
&lt;/TD&gt;
&lt;TD rowspan="2" width="64"&gt;
&lt;P&gt;61&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="114"&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;C2&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="76"&gt;
&lt;P&gt;8&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="128"&gt;
&lt;P&gt;29&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;37&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="114"&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;D1 &lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="76"&gt;
&lt;P&gt;12&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="128"&gt;
&lt;P&gt;29&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;41&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;41&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="114"&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;E1 &lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="76"&gt;
&lt;P&gt;67&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="128"&gt;
&lt;P&gt;202&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;269&lt;/P&gt;
&lt;/TD&gt;
&lt;TD rowspan="2" width="64"&gt;
&lt;P&gt;451&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="114"&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;E2&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="76"&gt;
&lt;P&gt;34&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="128"&gt;
&lt;P&gt;148&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;182&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="114"&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;…&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="76"&gt;
&lt;P&gt;…&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="128"&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;…&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;…&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;PROC TABULATE DATA=akkoord_p_r_age ;&lt;BR /&gt; CLASS csymp nr_year;&lt;BR /&gt;VAR aantal;&lt;BR /&gt; KEYLABEL SUM='';&lt;BR /&gt; TABLE csymp='' ALL=&amp;amp;&amp;amp;tot_&amp;amp;taal ,((nr_year='' ALL="Totaal &amp;amp;year_from - &amp;amp;year_to"))*aantal=''*(sum=''*f=10. colpctsum=''*f=pctpic7.2)&lt;BR /&gt; /BOX="" MISSTEXT=' ';&lt;BR /&gt;RUN;&lt;BR /&gt;QUIT;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Does anybody have an idea on how to do this easily?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks in advance.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Fri, 05 Feb 2016 12:37:52 GMT</pubDate>
    <dc:creator>andreas_gryn</dc:creator>
    <dc:date>2016-02-05T12:37:52Z</dc:date>
    <item>
      <title>Proc tabulate : create extra column with subtotals</title>
      <link>https://communities.sas.com/t5/ODS-and-Base-Reporting/Proc-tabulate-create-extra-column-with-subtotals/m-p/248216#M15217</link>
      <description>&lt;P&gt;Hi&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I created a report on a simple dataset using tabulate.&lt;/P&gt;
&lt;P&gt;Now I want to add a column with subtotals.&lt;/P&gt;
&lt;P&gt;The subtotal needs to be grouped based on the first position of the valuees in the first column.&lt;/P&gt;
&lt;P&gt;I can create an extra variable in my dataset with the result.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="446"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="114"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="76"&gt;
&lt;P&gt;2014&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="128"&gt;
&lt;P&gt;2015&lt;/P&gt;
&lt;/TD&gt;
&lt;TD colspan="2" width="128"&gt;
&lt;P&gt;Totaal&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="114"&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;A1 &lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="76"&gt;
&lt;P&gt;0&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="128"&gt;
&lt;P&gt;13&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;13&lt;/P&gt;
&lt;/TD&gt;
&lt;TD rowspan="2" width="64"&gt;
&lt;P&gt;13&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="114"&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;A2 &lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="76"&gt;
&lt;P&gt;0&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="128"&gt;
&lt;P&gt;0&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;0&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="114"&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;B1 &lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="76"&gt;
&lt;P&gt;2&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="128"&gt;
&lt;P&gt;18&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;20&lt;/P&gt;
&lt;/TD&gt;
&lt;TD rowspan="2" width="64"&gt;
&lt;P&gt;25&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="114"&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;B2 &lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="76"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="128"&gt;
&lt;P&gt;4&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;5&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="114"&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;C1&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="76"&gt;
&lt;P&gt;6&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="128"&gt;
&lt;P&gt;18&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;24&lt;/P&gt;
&lt;/TD&gt;
&lt;TD rowspan="2" width="64"&gt;
&lt;P&gt;61&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="114"&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;C2&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="76"&gt;
&lt;P&gt;8&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="128"&gt;
&lt;P&gt;29&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;37&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="114"&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;D1 &lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="76"&gt;
&lt;P&gt;12&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="128"&gt;
&lt;P&gt;29&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;41&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;41&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="114"&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;E1 &lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="76"&gt;
&lt;P&gt;67&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="128"&gt;
&lt;P&gt;202&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;269&lt;/P&gt;
&lt;/TD&gt;
&lt;TD rowspan="2" width="64"&gt;
&lt;P&gt;451&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="114"&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;E2&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="76"&gt;
&lt;P&gt;34&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="128"&gt;
&lt;P&gt;148&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;182&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="114"&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;…&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="76"&gt;
&lt;P&gt;…&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="128"&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;…&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;…&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;PROC TABULATE DATA=akkoord_p_r_age ;&lt;BR /&gt; CLASS csymp nr_year;&lt;BR /&gt;VAR aantal;&lt;BR /&gt; KEYLABEL SUM='';&lt;BR /&gt; TABLE csymp='' ALL=&amp;amp;&amp;amp;tot_&amp;amp;taal ,((nr_year='' ALL="Totaal &amp;amp;year_from - &amp;amp;year_to"))*aantal=''*(sum=''*f=10. colpctsum=''*f=pctpic7.2)&lt;BR /&gt; /BOX="" MISSTEXT=' ';&lt;BR /&gt;RUN;&lt;BR /&gt;QUIT;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Does anybody have an idea on how to do this easily?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks in advance.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 05 Feb 2016 12:37:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/ODS-and-Base-Reporting/Proc-tabulate-create-extra-column-with-subtotals/m-p/248216#M15217</guid>
      <dc:creator>andreas_gryn</dc:creator>
      <dc:date>2016-02-05T12:37:52Z</dc:date>
    </item>
    <item>
      <title>Re: Proc tabulate : create extra column with subtotals</title>
      <link>https://communities.sas.com/t5/ODS-and-Base-Reporting/Proc-tabulate-create-extra-column-with-subtotals/m-p/248224#M15218</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Some tips first. &amp;nbsp;Use the code window - in post a message its the {i} button above - this retains spacing and such like. &amp;nbsp;Code formatting is also very important. &amp;nbsp;Your code is very hard to read - mixed casings, line breaks all over, no indetation, and there is a whole lot of macro variables/code in there. &amp;nbsp;You also haven't provided any test data (in the form of a datastep) which would give us something to run code on. &amp;nbsp;I have made a best guess below, this is based on the fact that I personally don't really use proc tabulate, and prefer to do summaries using other methods:&lt;/P&gt;
&lt;PRE&gt;data have;
  input col1 $ year res;
  cat=substr(col1,1,1);
datalines;
A1 2014 1
A1 2014 5
A1 2015 2
A1 2016 8
A2 2014 10
A2 2014 3
A2 2015 4
;
run;

proc sql;
  create table WANT as
  select  distinct 
          CAT,
          COL1,
          (select sum(RES) from HAVE where CAT=A.CAT and COL1=A.COL1 and YEAR=2014) as YEAR2014, 
          (select sum(RES) from HAVE where CAT=A.CAT and COL1=A.COL1 and YEAR=2015) as YEAR2015,
          (select sum(RES) from HAVE where CAT=A.CAT and COL1=A.COL1 and YEAR=2016) as YEAR2016,
          (select sum(RES) from HAVE where CAT=A.CAT and COL1=A.COl1) as TOTAL,
          (select sum(RES) from HAVE where CAT=A.CAT) as TOTAL_CAT 
  from    HAVE A;
quit;&lt;BR /&gt;&lt;BR /&gt;proc report data=want...;&lt;BR /&gt;run;&lt;/PRE&gt;
&lt;P&gt;As you will see, you will need another variable whichever way you go to identify which grouping of data to sum. &amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 05 Feb 2016 13:20:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/ODS-and-Base-Reporting/Proc-tabulate-create-extra-column-with-subtotals/m-p/248224#M15218</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2016-02-05T13:20:38Z</dc:date>
    </item>
  </channel>
</rss>

