<?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 By Group Processing in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/By-Group-Processing/m-p/80348#M23121</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi all—&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I’m trying to get the hang of by group processing. How would you translate the SQL statement below into Base SAS using by group processing? &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sql; &lt;/P&gt;&lt;P&gt;create table &lt;/P&gt;&lt;P&gt;last_clos as&lt;/P&gt;&lt;P&gt;select * from &lt;/P&gt;&lt;P&gt;EVENT_CLOSINGS (WHERE=(ACTIVE_FLAG = 'Y' ) ) &lt;/P&gt;&lt;P&gt;group by &lt;/P&gt;&lt;P&gt;CASE_EVENTS_ID &lt;STRONG&gt;having&lt;/STRONG&gt; EVENT_CLOSINGS_ID=&lt;STRONG&gt;max&lt;/STRONG&gt;(EVENT_CLOSINGS_ID);&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks!!! &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 31 Jul 2012 21:41:52 GMT</pubDate>
    <dc:creator>RobertNYC</dc:creator>
    <dc:date>2012-07-31T21:41:52Z</dc:date>
    <item>
      <title>By Group Processing</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/By-Group-Processing/m-p/80348#M23121</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi all—&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I’m trying to get the hang of by group processing. How would you translate the SQL statement below into Base SAS using by group processing? &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sql; &lt;/P&gt;&lt;P&gt;create table &lt;/P&gt;&lt;P&gt;last_clos as&lt;/P&gt;&lt;P&gt;select * from &lt;/P&gt;&lt;P&gt;EVENT_CLOSINGS (WHERE=(ACTIVE_FLAG = 'Y' ) ) &lt;/P&gt;&lt;P&gt;group by &lt;/P&gt;&lt;P&gt;CASE_EVENTS_ID &lt;STRONG&gt;having&lt;/STRONG&gt; EVENT_CLOSINGS_ID=&lt;STRONG&gt;max&lt;/STRONG&gt;(EVENT_CLOSINGS_ID);&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks!!! &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 31 Jul 2012 21:41:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/By-Group-Processing/m-p/80348#M23121</guid>
      <dc:creator>RobertNYC</dc:creator>
      <dc:date>2012-07-31T21:41:52Z</dc:date>
    </item>
    <item>
      <title>Re: By Group Processing</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/By-Group-Processing/m-p/80349#M23122</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Are you sure that's what you want, basically the record where you only keep one ID, which is the highest out of all records?&lt;/P&gt;&lt;P&gt;Usually the group by variable isn't the same as the max(variable) though I can see where it might be. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It's a few steps in BASE SAS, so SQL is probably the best for this actually. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Proc sort data=event_closings out=ec2;&lt;/P&gt;&lt;P&gt;where active_flag='Y';&lt;/P&gt;&lt;P&gt;by descending case_events_id;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data ec3;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set ec2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by descending case_events_id;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if first.case_events_id then group=1;&lt;/P&gt;&lt;P&gt;else group=group+1;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data last_clos;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set event_closings;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where group=1;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 31 Jul 2012 22:02:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/By-Group-Processing/m-p/80349#M23122</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2012-07-31T22:02:35Z</dc:date>
    </item>
    <item>
      <title>Re: By Group Processing</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/By-Group-Processing/m-p/80350#M23123</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I agree with Fareeza, this looks like SQL job. If there are NO "EVENT_CLOSINGS_ID" duplicates within same "EVENT_CLOSINGS_ID", then it is not too bad, you will need two step, 1)sort 2) output;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Proc sort data=event_closings out=have;&lt;/P&gt;&lt;P&gt;where active_flag='Y';&lt;/P&gt;&lt;P&gt;by CASE_EVENTS_ID EVENT_CLOSINGS_ID ;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;set have;&lt;/P&gt;&lt;P&gt;if last.CASE_EVENTS_ID;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;However, if you have those duplicates, then the job becomes more complicated if you want to mimic what SQL does completely:&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if _n_=1 then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if 0 then set have;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dcl hash h(dataset: 'have', multidata:'y');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h.definekey('CASE_EVENTS_ID', 'EVENT_CLOSINGS_ID');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h.definedata(all:'y');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h.definedone();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set have;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by CASE_EVENTS_ID EVENT_CLOSINGS_ID ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if last.CASE_EVENTS_ID then do;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _rc=h.find();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do _rc=0 by 0 while (_rc=0);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _rc=h.find_next();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;drop _rc;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Haikuo&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 31 Jul 2012 22:52:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/By-Group-Processing/m-p/80350#M23123</guid>
      <dc:creator>Haikuo</dc:creator>
      <dc:date>2012-07-31T22:52:57Z</dc:date>
    </item>
    <item>
      <title>Re: By Group Processing</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/By-Group-Processing/m-p/80351#M23124</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You can do it without hash as well, however I did it incorrectly and it is a sort and two data steps.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data ec3;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set ec2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by descending case_events_id;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if _n_=1 then group=1;&lt;/P&gt;&lt;P&gt;else if first.case_events_id then group+1;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data last_close;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set ec3;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where group=1;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 31 Jul 2012 23:01:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/By-Group-Processing/m-p/80351#M23124</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2012-07-31T23:01:11Z</dc:date>
    </item>
  </channel>
</rss>

