<?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: Help for a simple summing problem? in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Help-for-a-simple-summing-problem/m-p/736869#M229657</link>
    <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/299716"&gt;@genemroz&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;Thank you for the prompt response and excellent solution using PROC SQL. However, I am curious to know if the same result can be obtained via a SAS Data Step?&lt;BR /&gt;Thanks again...&lt;BR /&gt;&lt;BR /&gt;Gene&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;You're welcome.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here's a DATA step solution using an array:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want(drop=i k);
array d[3] _temporary_;
do until(last.id);
  set have;
  by id;
  d[input(substr(type,2),32.)]+k;
end;
do i=1 to dim(d);
  type=cats('D',i);
  sumk=d[i];
  output;
end;
call missing(of d[*]);
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;This assumes that HAVE is sorted (or indexed) by ID.&lt;/P&gt;</description>
    <pubDate>Sun, 25 Apr 2021 16:33:26 GMT</pubDate>
    <dc:creator>FreelanceReinh</dc:creator>
    <dc:date>2021-04-25T16:33:26Z</dc:date>
    <item>
      <title>Help for a simple summing problem?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Help-for-a-simple-summing-problem/m-p/736853#M229645</link>
      <description>&lt;P&gt;Esteemed Advisers:&lt;/P&gt;
&lt;P&gt;I suspect this is a simple problem in summing but the solution is eluding me:&lt;/P&gt;
&lt;P&gt;I need help with SAS code that sums k(binary) for Types A1, B1 and C1 by ID and outputs as ID, D1,sumk and similarly summing for Types A2,B2,C2 to produce ID, D2, sumk , then summing for Types A3,B3, C3 to produce ID,D3,sumk and so forth. See below:&lt;/P&gt;
&lt;P&gt;Data Have;&lt;BR /&gt;input ID Type $ K;&lt;/P&gt;
&lt;P&gt;datalines;&lt;BR /&gt;1 A1 0&lt;BR /&gt;1 A2 0&lt;BR /&gt;1 A3 1&lt;BR /&gt;1 B1 1&lt;BR /&gt;1 B2 0&lt;BR /&gt;1 B3 0&lt;BR /&gt;1 C1 0&lt;BR /&gt;1 C2 0&lt;BR /&gt;1 C3 0&lt;BR /&gt;2 A1 0&lt;BR /&gt;2 A2 0&lt;BR /&gt;2 A3 1&lt;BR /&gt;2 B1 0&lt;BR /&gt;2 B2 0&lt;BR /&gt;2 B3 0&lt;BR /&gt;2 C1 0&lt;BR /&gt;2 C2 1&lt;BR /&gt;2 C3 0&lt;BR /&gt;.&lt;BR /&gt;.&lt;BR /&gt;.&lt;BR /&gt;;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;data want;&lt;BR /&gt;ID Type $ sumk;&lt;BR /&gt;1 D1 1&lt;BR /&gt;1 D2 0&lt;BR /&gt;1 D3 1&lt;BR /&gt;2 D1 0&lt;BR /&gt;2 D2 1&lt;BR /&gt;2 D3 1&lt;BR /&gt;.&lt;BR /&gt;.&lt;BR /&gt;.&lt;BR /&gt;;&lt;/P&gt;</description>
      <pubDate>Sun, 25 Apr 2021 14:56:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Help-for-a-simple-summing-problem/m-p/736853#M229645</guid>
      <dc:creator>genemroz</dc:creator>
      <dc:date>2021-04-25T14:56:04Z</dc:date>
    </item>
    <item>
      <title>Re: Help for a simple summing problem?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Help-for-a-simple-summing-problem/m-p/736854#M229646</link>
      <description>&lt;P&gt;Hello&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/299716"&gt;@genemroz&lt;/a&gt;,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Try PROC SQL:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql;
create table want as
select id, cats('D',substr(type,2)) as type length=8, sum(k) as sumk
from have
group by 1,2
order by 1,2;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sun, 25 Apr 2021 15:12:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Help-for-a-simple-summing-problem/m-p/736854#M229646</guid>
      <dc:creator>FreelanceReinh</dc:creator>
      <dc:date>2021-04-25T15:12:02Z</dc:date>
    </item>
    <item>
      <title>Re: Help for a simple summing problem?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Help-for-a-simple-summing-problem/m-p/736862#M229652</link>
      <description>&lt;P&gt;Do you need a dataset? Or just a report?&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc format ;
value $d 
  'A1','B1','C1'='D1'
  'A2','B2','C2'='D2'
  'A3','B3','C3'='D3'
;
run;

proc report data=have ;
 column id type k ;
 define id / group ;
 define type / group format=$d. ;
 define k / sum;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="image.png" style="width: 129px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/58667i4A2CB75E6003EE88/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="image.png" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Sun, 25 Apr 2021 15:51:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Help-for-a-simple-summing-problem/m-p/736862#M229652</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2021-04-25T15:51:44Z</dc:date>
    </item>
    <item>
      <title>Re: Help for a simple summing problem?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Help-for-a-simple-summing-problem/m-p/736863#M229653</link>
      <description>Thank you for the prompt response and excellent solution using PROC SQL. However, I am curious to know if the same result can be obtained via a SAS Data Step?&lt;BR /&gt;Thanks again...&lt;BR /&gt;&lt;BR /&gt;Gene</description>
      <pubDate>Sun, 25 Apr 2021 16:00:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Help-for-a-simple-summing-problem/m-p/736863#M229653</guid>
      <dc:creator>genemroz</dc:creator>
      <dc:date>2021-04-25T16:00:53Z</dc:date>
    </item>
    <item>
      <title>Re: Help for a simple summing problem?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Help-for-a-simple-summing-problem/m-p/736864#M229654</link>
      <description>I need the result as a dataset, not a report.&lt;BR /&gt;&lt;BR /&gt;Thanks,&lt;BR /&gt;&lt;BR /&gt;Gene</description>
      <pubDate>Sun, 25 Apr 2021 16:02:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Help-for-a-simple-summing-problem/m-p/736864#M229654</guid>
      <dc:creator>genemroz</dc:creator>
      <dc:date>2021-04-25T16:02:02Z</dc:date>
    </item>
    <item>
      <title>Re: Help for a simple summing problem?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Help-for-a-simple-summing-problem/m-p/736867#M229655</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/299716"&gt;@genemroz&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;I need the result as a dataset, not a report.&lt;BR /&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc format ;
value $d 
  'A1','B1','C1'='D1'
  'A2','B2','C2'='D2'
  'A3','B3','C3'='D3'
;
run;

proc summary nway data=have;
    class id type;
    var k;
    format type $d.;
    output out=want sum=;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sun, 25 Apr 2021 16:22:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Help-for-a-simple-summing-problem/m-p/736867#M229655</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2021-04-25T16:22:06Z</dc:date>
    </item>
    <item>
      <title>Re: Help for a simple summing problem?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Help-for-a-simple-summing-problem/m-p/736868#M229656</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/299716"&gt;@genemroz&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;Thank you for the prompt response and excellent solution using PROC SQL. However, I am curious to know if the same result can be obtained via a SAS Data Step?&lt;BR /&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;You shouldn't write your own DATA step code to sum by groups. SAS has already put in the effort to provide ways to sum by groups (PROC SUMMARY, PROC MEANS, PROC SQL) and has tested this code, debugged the code, and this code has been proven in a bazillion real-world applications. You (or your company or university) is paying SAS for this code, use it! Don't spend your time to re-invent the wheel.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;We see many many many times when people try to write their own data step code to do this, they either get it wrong, or spend huge amounts of time on it, neither of which is a good outcome.&lt;/P&gt;</description>
      <pubDate>Sun, 25 Apr 2021 16:26:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Help-for-a-simple-summing-problem/m-p/736868#M229656</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2021-04-25T16:26:18Z</dc:date>
    </item>
    <item>
      <title>Re: Help for a simple summing problem?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Help-for-a-simple-summing-problem/m-p/736869#M229657</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/299716"&gt;@genemroz&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;Thank you for the prompt response and excellent solution using PROC SQL. However, I am curious to know if the same result can be obtained via a SAS Data Step?&lt;BR /&gt;Thanks again...&lt;BR /&gt;&lt;BR /&gt;Gene&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;You're welcome.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here's a DATA step solution using an array:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want(drop=i k);
array d[3] _temporary_;
do until(last.id);
  set have;
  by id;
  d[input(substr(type,2),32.)]+k;
end;
do i=1 to dim(d);
  type=cats('D',i);
  sumk=d[i];
  output;
end;
call missing(of d[*]);
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;This assumes that HAVE is sorted (or indexed) by ID.&lt;/P&gt;</description>
      <pubDate>Sun, 25 Apr 2021 16:33:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Help-for-a-simple-summing-problem/m-p/736869#M229657</guid>
      <dc:creator>FreelanceReinh</dc:creator>
      <dc:date>2021-04-25T16:33:26Z</dc:date>
    </item>
    <item>
      <title>Re: Help for a simple summing problem?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Help-for-a-simple-summing-problem/m-p/736870#M229658</link>
      <description>Thanks for the prompt response and another excellent solution!&lt;BR /&gt;&lt;BR /&gt;Gene</description>
      <pubDate>Sun, 25 Apr 2021 16:37:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Help-for-a-simple-summing-problem/m-p/736870#M229658</guid>
      <dc:creator>genemroz</dc:creator>
      <dc:date>2021-04-25T16:37:55Z</dc:date>
    </item>
    <item>
      <title>Re: Help for a simple summing problem?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Help-for-a-simple-summing-problem/m-p/736871#M229659</link>
      <description>Thanks for this.  I look forward to trying it out on my dataset.&lt;BR /&gt;&lt;BR /&gt;Gene</description>
      <pubDate>Sun, 25 Apr 2021 16:42:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Help-for-a-simple-summing-problem/m-p/736871#M229659</guid>
      <dc:creator>genemroz</dc:creator>
      <dc:date>2021-04-25T16:42:56Z</dc:date>
    </item>
    <item>
      <title>Re: Help for a simple summing problem?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Help-for-a-simple-summing-problem/m-p/736872#M229660</link>
      <description>Thanks for your wise comments.  Having already spent too much time on this before posting the question this morning, I completely understand.&lt;BR /&gt;&lt;BR /&gt;Regards,&lt;BR /&gt;Gene</description>
      <pubDate>Sun, 25 Apr 2021 16:45:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Help-for-a-simple-summing-problem/m-p/736872#M229660</guid>
      <dc:creator>genemroz</dc:creator>
      <dc:date>2021-04-25T16:45:08Z</dc:date>
    </item>
    <item>
      <title>Re: Help for a simple summing problem?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Help-for-a-simple-summing-problem/m-p/736969#M229700</link>
      <description>&lt;P&gt;Just for fun.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;Data Have;
input ID Type $ K;
datalines;
1 A1 0
1 A2 0
1 A3 1
1 B1 1
1 B2 0
1 B3 0
1 C1 0
1 C2 0
1 C3 0
2 A1 0
2 A2 0
2 A3 1
2 B1 0
2 B2 0
2 B3 0
2 C1 0
2 C2 1
2 C3 0
;

proc sql;
create table want as
select id,'D1' as type,sum(k) as sum from have where type in ('A1','B1','C1') group by id 
union
select id,'D2' as type,sum(k) as sum from have where type in ('A2','B2','C2') group by id 
union
select id,'D3' as type,sum(k) as sum from have where type in ('A3','B3','C3') group by id 
;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 26 Apr 2021 12:44:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Help-for-a-simple-summing-problem/m-p/736969#M229700</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2021-04-26T12:44:46Z</dc:date>
    </item>
    <item>
      <title>Re: Help for a simple summing problem?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Help-for-a-simple-summing-problem/m-p/737003#M229716</link>
      <description>Thanks for this alternative!&lt;BR /&gt;&lt;BR /&gt;Regards,&lt;BR /&gt;&lt;BR /&gt;Gene</description>
      <pubDate>Mon, 26 Apr 2021 14:48:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Help-for-a-simple-summing-problem/m-p/737003#M229716</guid>
      <dc:creator>genemroz</dc:creator>
      <dc:date>2021-04-26T14:48:22Z</dc:date>
    </item>
  </channel>
</rss>

