<?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: sum by category in SAS Enterprise Guide</title>
    <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/sum-by-category/m-p/843182#M41674</link>
    <description>&lt;P&gt;For now I am just use the built in $3 format.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I could not figure out what the heck the original posted actually wanted.&lt;/P&gt;</description>
    <pubDate>Tue, 08 Nov 2022 17:03:37 GMT</pubDate>
    <dc:creator>Tom</dc:creator>
    <dc:date>2022-11-08T17:03:37Z</dc:date>
    <item>
      <title>sum by category</title>
      <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/sum-by-category/m-p/843171#M41670</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I was asked to calculate the sum of var1 through var6 and that per category. But now they want the sum of var5 and the sum of var6 and they want that sum reported in CAT2 and CBT1 respectively.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Is there a more efficient way to carry out that task&amp;nbsp;&lt;/P&gt;
&lt;P&gt;see the code below.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data test1;
   infile datalines delimiter=',';
   input category $ TransType $ var1 var2 var3 var4 var5 var6 ; 
   datalines;
CAT1, DIR, 100.00,  8.49, 0.08, 1.00, 0.00, 0.00
CAT2, DIR, 200.00,  2.12, 0.08, 1.00, 0.20, 0.02
CAT3, DIR, 800.00, 67.95, 0.08, 1.00, 0.20, 0.02
CAT4, DIR, 100.00, 10.19, 0.08, 1.00, 0.00, 0.00
CAT5, DIR, 700.00, 63.70, 0.08, 1.00, 0.20, 0.02
CBT1, DIR,  50.00,  4.25, 0.08, 1.00, 0.00, 0.00
CBT2, DIR, 300.00, 25.48, 0.08, 1.00, 0.25, 0.02
CBT3, DIR, 900.00, 76.44, 0.08, 1.00, 0.25, 0.02
CBT4, DIR, 100.00,  8.49, 0.08, 1.00, 0.00, 0.00

;
run;
data test1;
format category $8. TransType $8. mjcategory $8. var1 var2 var3 var4 var5 var6 f7.2 ;
set test1;
if substr(category,1,2) eq 'CA' then mjcategory = 'CAT2';
if substr(category,1,2) eq 'CB' then mjcategory = 'CBT1';
run;
proc sql;
create table test2 as
select a.*
		,sum(var5) as var7
		,sum(var6) as var8
from test1 as a
group by mjcategory;
quit;

Data test2 (drop= var7 var8 mjcategory);
set test2;
if category eq mjcategory then 
	do;
		var5=var7;
		var6=var8;
	end;
Else
	do;
		var5=0;
		var6=0;
	end;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 08 Nov 2022 16:22:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Enterprise-Guide/sum-by-category/m-p/843171#M41670</guid>
      <dc:creator>alepage</dc:creator>
      <dc:date>2022-11-08T16:22:14Z</dc:date>
    </item>
    <item>
      <title>Re: sum by category</title>
      <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/sum-by-category/m-p/843176#M41672</link>
      <description>&lt;P&gt;I do not understand what you are trying to do.&amp;nbsp; Is there some business logic behind this?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you want to treat CAT1,CAT2,... as one category and CBT1,CBT2,.. as other then simply using a format would be simpler.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
   input category $ TransType $ var1 var2 var3 var4 var5 var6 ; 
datalines;
CAT1  DIR  100.00   8.49  0.08  1.00  0.00  0.00
CAT2  DIR  200.00   2.12  0.08  1.00  0.20  0.02
CAT3  DIR  800.00  67.95  0.08  1.00  0.20  0.02
CAT4  DIR  100.00  10.19  0.08  1.00  0.00  0.00
CAT5  DIR  700.00  63.70  0.08  1.00  0.20  0.02
CBT1  DIR   50.00   4.25  0.08  1.00  0.00  0.00
CBT2  DIR  300.00  25.48  0.08  1.00  0.25  0.02
CBT3  DIR  900.00  76.44  0.08  1.00  0.25  0.02
CBT4  DIR  100.00   8.49  0.08  1.00  0.00  0.00
;

proc summary data=have nway;
  class category / mlf ;
  format category $3. ;
  var var1-var6 ;
  output out=two_categories sum=;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Results&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;Obs    category    _TYPE_    _FREQ_    var1     var2     var3    var4    var5    var6

 1       CAT          1         5      1900    152.45    0.40      5      0.6    0.06
 2       CBT          1         4      1350    114.66    0.32      4      0.5    0.04
&lt;/PRE&gt;</description>
      <pubDate>Tue, 08 Nov 2022 16:41:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Enterprise-Guide/sum-by-category/m-p/843176#M41672</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2022-11-08T16:41:35Z</dc:date>
    </item>
    <item>
      <title>Re: sum by category</title>
      <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/sum-by-category/m-p/843181#M41673</link>
      <description>&lt;P&gt;Did you leave out PROC FORMAT from your code?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I agree, a custom format is the best way to do this.&lt;/P&gt;</description>
      <pubDate>Tue, 08 Nov 2022 17:00:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Enterprise-Guide/sum-by-category/m-p/843181#M41673</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2022-11-08T17:00:44Z</dc:date>
    </item>
    <item>
      <title>Re: sum by category</title>
      <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/sum-by-category/m-p/843182#M41674</link>
      <description>&lt;P&gt;For now I am just use the built in $3 format.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I could not figure out what the heck the original posted actually wanted.&lt;/P&gt;</description>
      <pubDate>Tue, 08 Nov 2022 17:03:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Enterprise-Guide/sum-by-category/m-p/843182#M41674</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2022-11-08T17:03:37Z</dc:date>
    </item>
    <item>
      <title>Re: sum by category</title>
      <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/sum-by-category/m-p/843184#M41675</link>
      <description>&lt;P&gt;&lt;SPAN&gt;Is there some business logic behind this?&amp;nbsp; I am affraid not.&amp;nbsp; I was asked to calculate the sum of var1 - var6 and that, per category.&amp;nbsp; Then because they don't like fraction in var5 and var6, their requirement is now to rollup the sum for var5 and var6 and to report it as cat2 and cbt1.&amp;nbsp; (see the obtained dataset below)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="600"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="75"&gt;category&lt;/TD&gt;
&lt;TD width="75"&gt;TransType&lt;/TD&gt;
&lt;TD width="75"&gt;var1&lt;/TD&gt;
&lt;TD width="75"&gt;var2&lt;/TD&gt;
&lt;TD width="75"&gt;var3&lt;/TD&gt;
&lt;TD width="75"&gt;var4&lt;/TD&gt;
&lt;TD width="75"&gt;var5&lt;/TD&gt;
&lt;TD width="75"&gt;var6&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;CAT3&lt;/TD&gt;
&lt;TD&gt;DIR&lt;/TD&gt;
&lt;TD&gt;800.00&lt;/TD&gt;
&lt;TD&gt;67.95&lt;/TD&gt;
&lt;TD&gt;0.08&lt;/TD&gt;
&lt;TD&gt;1.00&lt;/TD&gt;
&lt;TD&gt;0.00&lt;/TD&gt;
&lt;TD&gt;0.00&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;CAT5&lt;/TD&gt;
&lt;TD&gt;DIR&lt;/TD&gt;
&lt;TD&gt;700.00&lt;/TD&gt;
&lt;TD&gt;63.70&lt;/TD&gt;
&lt;TD&gt;0.08&lt;/TD&gt;
&lt;TD&gt;1.00&lt;/TD&gt;
&lt;TD&gt;0.00&lt;/TD&gt;
&lt;TD&gt;0.00&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;CAT2&lt;/TD&gt;
&lt;TD&gt;DIR&lt;/TD&gt;
&lt;TD&gt;200.00&lt;/TD&gt;
&lt;TD&gt;2.12&lt;/TD&gt;
&lt;TD&gt;0.08&lt;/TD&gt;
&lt;TD&gt;1.00&lt;/TD&gt;
&lt;TD&gt;0.60&lt;/TD&gt;
&lt;TD&gt;0.06&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;CAT1&lt;/TD&gt;
&lt;TD&gt;DIR&lt;/TD&gt;
&lt;TD&gt;100.00&lt;/TD&gt;
&lt;TD&gt;8.49&lt;/TD&gt;
&lt;TD&gt;0.08&lt;/TD&gt;
&lt;TD&gt;1.00&lt;/TD&gt;
&lt;TD&gt;0.00&lt;/TD&gt;
&lt;TD&gt;0.00&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;CAT4&lt;/TD&gt;
&lt;TD&gt;DIR&lt;/TD&gt;
&lt;TD&gt;100.00&lt;/TD&gt;
&lt;TD&gt;10.19&lt;/TD&gt;
&lt;TD&gt;0.08&lt;/TD&gt;
&lt;TD&gt;1.00&lt;/TD&gt;
&lt;TD&gt;0.00&lt;/TD&gt;
&lt;TD&gt;0.00&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;CBT2&lt;/TD&gt;
&lt;TD&gt;DIR&lt;/TD&gt;
&lt;TD&gt;300.00&lt;/TD&gt;
&lt;TD&gt;25.48&lt;/TD&gt;
&lt;TD&gt;0.08&lt;/TD&gt;
&lt;TD&gt;1.00&lt;/TD&gt;
&lt;TD&gt;0.00&lt;/TD&gt;
&lt;TD&gt;0.00&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;CBT1&lt;/TD&gt;
&lt;TD&gt;DIR&lt;/TD&gt;
&lt;TD&gt;50.00&lt;/TD&gt;
&lt;TD&gt;4.25&lt;/TD&gt;
&lt;TD&gt;0.08&lt;/TD&gt;
&lt;TD&gt;1.00&lt;/TD&gt;
&lt;TD&gt;0.50&lt;/TD&gt;
&lt;TD&gt;0.04&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;CBT4&lt;/TD&gt;
&lt;TD&gt;DIR&lt;/TD&gt;
&lt;TD&gt;100.00&lt;/TD&gt;
&lt;TD&gt;8.49&lt;/TD&gt;
&lt;TD&gt;0.08&lt;/TD&gt;
&lt;TD&gt;1.00&lt;/TD&gt;
&lt;TD&gt;0.00&lt;/TD&gt;
&lt;TD&gt;0.00&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;CBT3&lt;/TD&gt;
&lt;TD&gt;DIR&lt;/TD&gt;
&lt;TD&gt;900.00&lt;/TD&gt;
&lt;TD&gt;76.44&lt;/TD&gt;
&lt;TD&gt;0.08&lt;/TD&gt;
&lt;TD&gt;1.00&lt;/TD&gt;
&lt;TD&gt;0.00&lt;/TD&gt;
&lt;TD&gt;0.00&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;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 08 Nov 2022 17:05:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Enterprise-Guide/sum-by-category/m-p/843184#M41675</guid>
      <dc:creator>alepage</dc:creator>
      <dc:date>2022-11-08T17:05:44Z</dc:date>
    </item>
    <item>
      <title>Re: sum by category</title>
      <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/sum-by-category/m-p/843186#M41676</link>
      <description>Could you please provide an example of a custom format.  I am not familar with it</description>
      <pubDate>Tue, 08 Nov 2022 17:09:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Enterprise-Guide/sum-by-category/m-p/843186#M41676</guid>
      <dc:creator>alepage</dc:creator>
      <dc:date>2022-11-08T17:09:07Z</dc:date>
    </item>
    <item>
      <title>Re: sum by category</title>
      <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/sum-by-category/m-p/843202#M41677</link>
      <description>&lt;P&gt;So you have the detailed summary already:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data summary;
   input category $ TransType $ var1 var2 var3 var4 var5 var6 ; 
datalines;
CAT1  DIR  100.00   8.49  0.08  1.00  0.00  0.00
CAT2  DIR  200.00   2.12  0.08  1.00  0.20  0.02
CAT3  DIR  800.00  67.95  0.08  1.00  0.20  0.02
CAT4  DIR  100.00  10.19  0.08  1.00  0.00  0.00
CAT5  DIR  700.00  63.70  0.08  1.00  0.20  0.02
CBT1  DIR   50.00   4.25  0.08  1.00  0.00  0.00
CBT2  DIR  300.00  25.48  0.08  1.00  0.25  0.02
CBT3  DIR  900.00  76.44  0.08  1.00  0.25  0.02
CBT4  DIR  100.00   8.49  0.08  1.00  0.00  0.00
;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;And you want to collapse VAR5 and VAR6 to have only one non-zero value that is the sum of all the values in that group.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You can get there directly with PROC SQL code like this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql ;
 create table want as 
   select category, transtype
        , var1 ,var2 ,var3 ,var4
        , case when (category in ('CAT2' 'CBT1')) then sum(var5) else 0 end as var5 
        , case when (category in ('CAT2' 'CBT1')) then sum(var6) else 0 end as var6
   from summary 
   group by substr(category,1,3)
   order by category
 ;
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Which takes advantage of the fact that PROC SQL will re-merge the aggregate values onto all of the observations for you.&amp;nbsp; As noted in the log:&lt;/P&gt;
&lt;PRE&gt;NOTE: The query requires remerging summary statistics back with the original data.
&lt;/PRE&gt;
&lt;P&gt;Results&lt;/P&gt;
&lt;PRE&gt;                   Trans
Obs    category    Type     var1     var2    var3    var4    var5    var6

 1       CAT1       DIR      100     8.49    0.08      1      0.0    0.00
 2       CAT2       DIR      200     2.12    0.08      1      0.6    0.06
 3       CAT3       DIR      800    67.95    0.08      1      0.0    0.00
 4       CAT4       DIR      100    10.19    0.08      1      0.0    0.00
 5       CAT5       DIR      700    63.70    0.08      1      0.0    0.00
 6       CBT1       DIR       50     4.25    0.08      1      0.5    0.04
 7       CBT2       DIR      300    25.48    0.08      1      0.0    0.00
 8       CBT3       DIR      900    76.44    0.08      1      0.0    0.00
 9       CBT4       DIR      100     8.49    0.08      1      0.0    0.00
&lt;/PRE&gt;</description>
      <pubDate>Tue, 08 Nov 2022 17:51:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Enterprise-Guide/sum-by-category/m-p/843202#M41677</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2022-11-08T17:51:53Z</dc:date>
    </item>
  </channel>
</rss>

