<?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: Hard question: Selecting observation(s) conditionally by group in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Hard-question-Selecting-observation-s-conditionally-by-group/m-p/171174#M32863</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi... Pls the try following code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data have;&lt;/P&gt;&lt;P&gt;&amp;nbsp; infile datalines dlm=' ' truncover;&lt;/P&gt;&lt;P&gt;&amp;nbsp; input (groupname x) (:$2.) xnum 8.;&lt;/P&gt;&lt;P&gt;&amp;nbsp; datalines;&lt;/P&gt;&lt;P&gt;a ui 100&lt;/P&gt;&lt;P&gt;b gg 100&lt;/P&gt;&lt;P&gt;c hy 40&lt;/P&gt;&lt;P&gt;c kt 59&lt;/P&gt;&lt;P&gt;c jj 1&lt;/P&gt;&lt;P&gt;d kq 88&lt;/P&gt;&lt;P&gt;d qp 3&lt;/P&gt;&lt;P&gt;d qv 9&lt;/P&gt;&lt;P&gt;e nl 100&lt;/P&gt;&lt;P&gt;f aq 34&lt;/P&gt;&lt;P&gt;f zz 2&lt;/P&gt;&lt;P&gt;f bb 30&lt;/P&gt;&lt;P&gt;f mq 34&lt;/P&gt;&lt;P&gt;g qq 66&lt;/P&gt;&lt;P&gt;g gt 5&lt;/P&gt;&lt;P&gt;g zf 29&lt;/P&gt;&lt;P&gt;h hu 100&lt;/P&gt;&lt;P&gt;i aa 40&lt;/P&gt;&lt;P&gt;i xf 20&lt;/P&gt;&lt;P&gt;i ir 40&lt;/P&gt;&lt;P&gt;j er 33&lt;/P&gt;&lt;P&gt;j ae 33&lt;/P&gt;&lt;P&gt;j vt 33&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sql;&lt;/P&gt;&lt;P&gt;create table temp_table as(select groupname, x , xnum from have a where xnum=(select max(xnum) from have b group by groupname having a.groupname=b.groupname));&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sort data=temp_table; by groupname xnum; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want;length b1 $20.; retain b1;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;set temp_table; by groupname xnum;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if first.xnum then b1=x;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;else b1=catt(b1,',',x);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if last.xnum;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;drop x; rename b1=x;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 12 Dec 2013 17:59:44 GMT</pubDate>
    <dc:creator>Kavitha</dc:creator>
    <dc:date>2013-12-12T17:59:44Z</dc:date>
    <item>
      <title>Hard question: Selecting observation(s) conditionally by group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Hard-question-Selecting-observation-s-conditionally-by-group/m-p/171170#M32859</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I think this question is a hard one.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;group x xnum&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;a ui 100&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;b gg 100&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;c hy 40&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;c kt 59&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;c jj 1&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;d kq 88&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;d qp 3&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;d qv 9&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;e nl 100&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;f aq 34&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;f zz 2&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;f bb 30&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;f mq 34&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;g qq 66&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;g gt 5&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;g zf 29&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;h hu 100&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;i aa 40&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;i xf 20&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;i ir 40&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;j er 33&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;j ae 33 &lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;j vt 33&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here, I have to select observation(s) that the value(s) of &lt;STRONG&gt;xnum&lt;/STRONG&gt; is(are) maximum by group. &lt;STRONG&gt;One more thing to consider!:&lt;/STRONG&gt;&amp;nbsp; Look at the group of &lt;STRONG&gt;&lt;EM&gt; f,&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;EM&gt;i&lt;/EM&gt;&lt;/STRONG&gt;, and&lt;STRONG&gt;&lt;EM&gt; j&lt;/EM&gt;&lt;/STRONG&gt;. The group &lt;EM&gt;&lt;STRONG&gt;f&lt;/STRONG&gt;&lt;/EM&gt; and &lt;EM&gt;&lt;STRONG&gt;i&lt;/STRONG&gt;&lt;/EM&gt; have two maximum values in each group in &lt;STRONG&gt;xnum&lt;/STRONG&gt;, and the group&lt;EM&gt;&lt;STRONG&gt; j&lt;/STRONG&gt;&lt;/EM&gt; has three maximum values in &lt;STRONG&gt;xnum&lt;/STRONG&gt;. So, the final output data should be as follows:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;group x xnum&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;a ui 100&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;b gg 100&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;c kt 59&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;d kq 88&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;e nl 100&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;f &lt;STRONG&gt;aq/mq&lt;/STRONG&gt; 34&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;g qq 66&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;h hu 100&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;i &lt;STRONG&gt;aa/ir&lt;/STRONG&gt; 40&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;j &lt;STRONG&gt;er/ae/vt&lt;/STRONG&gt; 33&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I wonder whether or not any SAS expert can solve this problem. Thanks.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 12 Dec 2013 07:05:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Hard-question-Selecting-observation-s-conditionally-by-group/m-p/171170#M32859</guid>
      <dc:creator>tesu</dc:creator>
      <dc:date>2013-12-12T07:05:09Z</dc:date>
    </item>
    <item>
      <title>Re: Hard question: Selecting observation(s) conditionally by group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Hard-question-Selecting-observation-s-conditionally-by-group/m-p/171171#M32860</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;One way to go:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data have;&lt;BR /&gt;&amp;nbsp; infile datalines dlm=' ' truncover;&lt;BR /&gt;&amp;nbsp; input (group x) (:$2.) xnum 8.;&lt;BR /&gt;&amp;nbsp; datalines;&lt;BR /&gt;a ui 100&lt;BR /&gt;b gg 100&lt;BR /&gt;c hy 40&lt;BR /&gt;c kt 59&lt;BR /&gt;c jj 1&lt;BR /&gt;d kq 88&lt;BR /&gt;d qp 3&lt;BR /&gt;d qv 9&lt;BR /&gt;e nl 100&lt;BR /&gt;f aq 34&lt;BR /&gt;f zz 2&lt;BR /&gt;f bb 30&lt;BR /&gt;f mq 34&lt;BR /&gt;g qq 66&lt;BR /&gt;g gt 5&lt;BR /&gt;g zf 29&lt;BR /&gt;h hu 100&lt;BR /&gt;i aa 40&lt;BR /&gt;i xf 20&lt;BR /&gt;i ir 40&lt;BR /&gt;j er 33&lt;BR /&gt;j ae 33 &lt;BR /&gt;j vt 33&lt;BR /&gt;;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sql;&lt;BR /&gt;&amp;nbsp; create view v_inter as&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; group,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x as _x,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; max(xnum) as max_xnum&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from have&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; group by group&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; having max(xnum)=xnum&lt;BR /&gt;&amp;nbsp; ;&lt;BR /&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want(drop=_:);&lt;BR /&gt;&amp;nbsp; set v_inter;&lt;BR /&gt;&amp;nbsp; by group;&lt;BR /&gt;&amp;nbsp; length x $30;&lt;BR /&gt;&amp;nbsp; retain x;&lt;BR /&gt;&amp;nbsp; x=catx('/',x,_x);&lt;BR /&gt;&amp;nbsp; if last.group then&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; call missing(x);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 12 Dec 2013 08:13:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Hard-question-Selecting-observation-s-conditionally-by-group/m-p/171171#M32860</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2013-12-12T08:13:16Z</dc:date>
    </item>
    <item>
      <title>Re: Hard question: Selecting observation(s) conditionally by group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Hard-question-Selecting-observation-s-conditionally-by-group/m-p/171172#M32861</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Here is another:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sort data=have; &lt;/P&gt;&lt;P&gt; by group descending xnum; &lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want(keep=group--xmax);&lt;/P&gt;&lt;P&gt; length group $1 xxx $100 xmax 8;&lt;/P&gt;&lt;P&gt; do until(last.group);&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; by group;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if first.group then xmax=xnum;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if xnum=xmax then xxx=catx("/",xxx,x);&lt;/P&gt;&lt;P&gt; end;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 12 Dec 2013 08:58:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Hard-question-Selecting-observation-s-conditionally-by-group/m-p/171172#M32861</guid>
      <dc:creator>barchan</dc:creator>
      <dc:date>2013-12-12T08:58:49Z</dc:date>
    </item>
    <item>
      <title>Re: Hard question: Selecting observation(s) conditionally by group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Hard-question-Selecting-observation-s-conditionally-by-group/m-p/171173#M32862</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;And a one-step-solution. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data _null_;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; length group $ 2&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xList $ 200&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; max 8&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp; declare hash h(ordered: 'yes');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h.defineKey('group');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h.defineData('group', 'xList', 'max');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h.defineDone();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; call missing(group, xList, max);&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 work.have end= jobDone;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if h.find() ^= 0 then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* new group */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; max = xnum;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xList = x;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h.add();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if max = xnum then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* adding x to the group */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xList = catx('/', xList, x);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h.replace();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp; if max &amp;lt; xnum then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* replacing small xnum */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; max = xnum;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xList = x;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h.replace();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&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; if jobDone then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h.output(dataset: 'work.want(rename=(xList = x max = xnum))');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 12 Dec 2013 15:22:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Hard-question-Selecting-observation-s-conditionally-by-group/m-p/171173#M32862</guid>
      <dc:creator>andreas_lds</dc:creator>
      <dc:date>2013-12-12T15:22:59Z</dc:date>
    </item>
    <item>
      <title>Re: Hard question: Selecting observation(s) conditionally by group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Hard-question-Selecting-observation-s-conditionally-by-group/m-p/171174#M32863</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi... Pls the try following code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data have;&lt;/P&gt;&lt;P&gt;&amp;nbsp; infile datalines dlm=' ' truncover;&lt;/P&gt;&lt;P&gt;&amp;nbsp; input (groupname x) (:$2.) xnum 8.;&lt;/P&gt;&lt;P&gt;&amp;nbsp; datalines;&lt;/P&gt;&lt;P&gt;a ui 100&lt;/P&gt;&lt;P&gt;b gg 100&lt;/P&gt;&lt;P&gt;c hy 40&lt;/P&gt;&lt;P&gt;c kt 59&lt;/P&gt;&lt;P&gt;c jj 1&lt;/P&gt;&lt;P&gt;d kq 88&lt;/P&gt;&lt;P&gt;d qp 3&lt;/P&gt;&lt;P&gt;d qv 9&lt;/P&gt;&lt;P&gt;e nl 100&lt;/P&gt;&lt;P&gt;f aq 34&lt;/P&gt;&lt;P&gt;f zz 2&lt;/P&gt;&lt;P&gt;f bb 30&lt;/P&gt;&lt;P&gt;f mq 34&lt;/P&gt;&lt;P&gt;g qq 66&lt;/P&gt;&lt;P&gt;g gt 5&lt;/P&gt;&lt;P&gt;g zf 29&lt;/P&gt;&lt;P&gt;h hu 100&lt;/P&gt;&lt;P&gt;i aa 40&lt;/P&gt;&lt;P&gt;i xf 20&lt;/P&gt;&lt;P&gt;i ir 40&lt;/P&gt;&lt;P&gt;j er 33&lt;/P&gt;&lt;P&gt;j ae 33&lt;/P&gt;&lt;P&gt;j vt 33&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sql;&lt;/P&gt;&lt;P&gt;create table temp_table as(select groupname, x , xnum from have a where xnum=(select max(xnum) from have b group by groupname having a.groupname=b.groupname));&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sort data=temp_table; by groupname xnum; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want;length b1 $20.; retain b1;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;set temp_table; by groupname xnum;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if first.xnum then b1=x;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;else b1=catt(b1,',',x);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if last.xnum;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;drop x; rename b1=x;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 12 Dec 2013 17:59:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Hard-question-Selecting-observation-s-conditionally-by-group/m-p/171174#M32863</guid>
      <dc:creator>Kavitha</dc:creator>
      <dc:date>2013-12-12T17:59:44Z</dc:date>
    </item>
    <item>
      <title>Re: Hard question: Selecting observation(s) conditionally by group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Hard-question-Selecting-observation-s-conditionally-by-group/m-p/171175#M32864</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Surprised that nobody mentioned the classical 2XDOW approach:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;STRONG style="color: navy; background: white; font-size: 10.0pt; font-family: 'Courier New';"&gt;data&lt;/STRONG&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: white;"&gt; have;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: blue; background: white;"&gt;infile&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: white;"&gt; datalines &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: blue; background: white;"&gt;dlm&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: white;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: purple; background: white;"&gt;' '&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: blue; background: white;"&gt;truncover&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: white;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: blue; background: white;"&gt;input&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: white;"&gt; (group x) (:&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: teal; background: white;"&gt;$2.&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: white;"&gt;) xnum &lt;/SPAN&gt;&lt;STRONG style="color: teal; background: white; font-size: 10.0pt; font-family: 'Courier New';"&gt;8.&lt;/STRONG&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: white;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: blue; background: white;"&gt;datalines&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: white;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: #FFFFC0;"&gt;a ui 100&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: #FFFFC0;"&gt;b gg 100&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: #FFFFC0;"&gt;c hy 40&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: #FFFFC0;"&gt;c kt 59&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: #FFFFC0;"&gt;c jj 1&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: #FFFFC0;"&gt;d kq 88&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: #FFFFC0;"&gt;d qp 3&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: #FFFFC0;"&gt;d qv 9&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: #FFFFC0;"&gt;e nl 100&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: #FFFFC0;"&gt;f aq 34&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: #FFFFC0;"&gt;f zz 2&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: #FFFFC0;"&gt;f bb 30&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: #FFFFC0;"&gt;f mq 34&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: #FFFFC0;"&gt;g qq 66&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: #FFFFC0;"&gt;g gt 5&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: #FFFFC0;"&gt;g zf 29&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: #FFFFC0;"&gt;h hu 100&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: #FFFFC0;"&gt;i aa 40&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: #FFFFC0;"&gt;i xf 20&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: #FFFFC0;"&gt;i ir 40&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: #FFFFC0;"&gt;j er 33&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: #FFFFC0;"&gt;j ae 33 &lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: #FFFFC0;"&gt;j vt 33&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: white;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: blue; background: white;"&gt;run&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: white;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: white;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;STRONG style="color: navy; background: white; font-size: 10.0pt; font-family: 'Courier New';"&gt;data&lt;/STRONG&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: white;"&gt; want;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: blue; background: white;"&gt;do&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: blue; background: white;"&gt;until&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: white;"&gt; (last.group);&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: blue; background: white;"&gt;set&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: white;"&gt; have;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: blue; background: white;"&gt;by&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: white;"&gt; group;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: blue; background: white;"&gt;length&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: white;"&gt; list $ &lt;/SPAN&gt;&lt;STRONG style="color: teal; background: white; font-size: 10.0pt; font-family: 'Courier New';"&gt;100&lt;/STRONG&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: white;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: white;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; max=max(max,xnum);&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: blue; background: white;"&gt;end&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: white;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: blue; background: white;"&gt;do&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: blue; background: white;"&gt;until&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: white;"&gt; (last.group);&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: blue; background: white;"&gt;set&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: white;"&gt; have;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: blue; background: white;"&gt;by&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: white;"&gt; group;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: blue; background: white;"&gt;if&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: white;"&gt; xnum=max &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: blue; background: white;"&gt;then&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: white;"&gt; list=catx(&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: purple; background: white;"&gt;'/'&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: white;"&gt;,list,x);&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: blue; background: white;"&gt;end&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: white;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: blue; background: white;"&gt;drop&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: white;"&gt; x xnum;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: blue; background: white;"&gt;run&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Courier New'; color: black; background: white;"&gt;;&lt;/SPAN&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>Thu, 12 Dec 2013 18:41:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Hard-question-Selecting-observation-s-conditionally-by-group/m-p/171175#M32864</guid>
      <dc:creator>Haikuo</dc:creator>
      <dc:date>2013-12-12T18:41:53Z</dc:date>
    </item>
    <item>
      <title>Re: Hard question: Selecting observation(s) conditionally by group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Hard-question-Selecting-observation-s-conditionally-by-group/m-p/171176#M32865</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you, all. You guys are amazing!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 12 Dec 2013 20:35:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Hard-question-Selecting-observation-s-conditionally-by-group/m-p/171176#M32865</guid>
      <dc:creator>tesu</dc:creator>
      <dc:date>2013-12-12T20:35:43Z</dc:date>
    </item>
  </channel>
</rss>

