<?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: Selecting the first group within the same group in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Selecting-the-first-group-within-the-same-group/m-p/894452#M353323</link>
    <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
infile cards truncover;
input OBS	ID $	group;
cards;
1	A	1
2	A	1
3	A	1
4	A	1
5	A	 
6	A	 
7	A	 
8	A	1
9	A	1
10	A	1
11	A	1
12	A	 
13	A	1
14	A	1
15	A	1
16	A	1
17	A	1
1	B	 
2	B	 
3	B	 
4	B	1
5	B	1
6	B	1
7	B	 
;
data temp;
 set have;
 by id group notsorted;
 n+first.group;
run;
proc sql;
create table want as
select *
 from temp
  where group is not missing
   group by id
    having n=min(n);
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Fri, 15 Sep 2023 11:40:08 GMT</pubDate>
    <dc:creator>Ksharp</dc:creator>
    <dc:date>2023-09-15T11:40:08Z</dc:date>
    <item>
      <title>Selecting the first group within the same group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Selecting-the-first-group-within-the-same-group/m-p/894323#M353287</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The data set I have is like the example below. As you can see, there can be one or more subsets (group=1) within each ID. For example, there are 3 groups for ID=A , and there is 1 group for ID=B. I would like to keep only the first group (OBS=1-4 for ID=A; OBS=4-6 for ID=B) for each ID, but I cannot figure out how. Also, if possible, I would like to assign subgroup ID within ID. For example, subgroup ID=1 for OBS=1-4 and subgroup ID=2 for OBS=8-11, etc., for ID=A.&amp;nbsp;Please help!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="194"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;OBS&lt;/TD&gt;
&lt;TD width="64"&gt;ID&lt;/TD&gt;
&lt;TD width="66"&gt;group&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;5&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;6&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;7&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;8&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;9&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;10&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;11&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;12&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;13&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;14&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;15&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;16&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;17&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;5&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;6&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;7&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;</description>
      <pubDate>Thu, 14 Sep 2023 17:21:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Selecting-the-first-group-within-the-same-group/m-p/894323#M353287</guid>
      <dc:creator>brainupgraded</dc:creator>
      <dc:date>2023-09-14T17:21:53Z</dc:date>
    </item>
    <item>
      <title>Re: Selecting the first group within the same group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Selecting-the-first-group-within-the-same-group/m-p/894345#M353291</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
infile cards truncover;
input OBS	ID $	group;
cards;
1	A	1
2	A	1
3	A	1
4	A	1
5	A	 
6	A	 
7	A	 
8	A	1
9	A	1
10	A	1
11	A	1
12	A	 
13	A	1
14	A	1
15	A	1
16	A	1
17	A	1
1	B	 
2	B	 
3	B	 
4	B	1
5	B	1
6	B	1
7	B	 
;

data want;
    set have;
    by id;
    retain flag;
    if first.id then flag=0;
    if group=1 and flag=0 then do; 
        subgroup+1;
        flag=1;
    end;
    if flag=1 and missing(group) then flag=2;
    if flag=1 then output;
    drop flag;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Hello,&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/145941"&gt;@brainupgraded&lt;/a&gt;&amp;nbsp;, from now on please provide data as working SAS data step code, as shown above (more detailed instructions &lt;A href="https://blogs.sas.com/content/sastraining/2016/03/11/jedi-sas-tricks-data-to-data-step-macro/" target="_self"&gt;here&lt;/A&gt;). Do &lt;FONT color="#FF0000"&gt;not&lt;/FONT&gt; provide data as screen captures or copy and paste from Excel or any other method.&lt;/P&gt;</description>
      <pubDate>Thu, 14 Sep 2023 18:39:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Selecting-the-first-group-within-the-same-group/m-p/894345#M353291</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2023-09-14T18:39:47Z</dc:date>
    </item>
    <item>
      <title>Re: Selecting the first group within the same group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Selecting-the-first-group-within-the-same-group/m-p/894425#M353313</link>
      <description>&lt;P&gt;You say&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;SPAN&gt;I would like to keep only the first group (OBS=1-4 for ID=A; OBS=4-6 for ID=B) for each ID,&lt;/SPAN&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;SPAN&gt;but then you also say&lt;/SPAN&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;SPAN&gt;I would like to assign subgroup ID within ID. For example, subgroup ID=1 for OBS=1-4 and subgroup ID=2 for OBS=8-11, etc., for ID=A.&lt;/SPAN&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;SPAN&gt;What's the point of the second objective if you only want to produce output under the first?&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;This program does the second.&amp;nbsp; It deletes all instances where group^=1, and assigns ascending subgroup values for each consecutive group of 1's, within each id.&lt;/SPAN&gt;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
infile cards truncover;
input OBS	ID $	group ;
cards;
1	A	1      
2	A	1      
3	A	1      
4	A	1      
5	A	       
6	A	       
7	A	       
8	A	1      
9	A	1      
10	A	1      
11	A	1      
12	A	       
13	A	1      
14	A	1      
15	A	1      
16	A	1      
17	A	1      
1	B	       
2	B	       
3	B	       
4	B	1      
5	B	1      
6	B	1      
7	B	       
;
data want;
  set have;
  by id group notsorted;
  obs=_n_;
  if first.id then subgroup=0;
  if first.group=1 and group=1 then subgroup+1;
  if group ^=1 then delete;   /*outputs ALL subgroups.*/
  *if group=1 and subgroup=1; /*outputs only subgroup 1*/
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;If you want only the first subgroup for each ID, then decomment the last IF statement (and you could drop the next-to-last IF should you want).&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 15 Sep 2023 04:19:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Selecting-the-first-group-within-the-same-group/m-p/894425#M353313</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2023-09-15T04:19:12Z</dc:date>
    </item>
    <item>
      <title>Re: Selecting the first group within the same group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Selecting-the-first-group-within-the-same-group/m-p/894452#M353323</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
infile cards truncover;
input OBS	ID $	group;
cards;
1	A	1
2	A	1
3	A	1
4	A	1
5	A	 
6	A	 
7	A	 
8	A	1
9	A	1
10	A	1
11	A	1
12	A	 
13	A	1
14	A	1
15	A	1
16	A	1
17	A	1
1	B	 
2	B	 
3	B	 
4	B	1
5	B	1
6	B	1
7	B	 
;
data temp;
 set have;
 by id group notsorted;
 n+first.group;
run;
proc sql;
create table want as
select *
 from temp
  where group is not missing
   group by id
    having n=min(n);
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 15 Sep 2023 11:40:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Selecting-the-first-group-within-the-same-group/m-p/894452#M353323</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2023-09-15T11:40:08Z</dc:date>
    </item>
    <item>
      <title>Re: Selecting the first group within the same group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Selecting-the-first-group-within-the-same-group/m-p/894931#M353519</link>
      <description>&lt;P&gt;This works perfectly. Thank you so much.&lt;/P&gt;</description>
      <pubDate>Tue, 19 Sep 2023 14:56:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Selecting-the-first-group-within-the-same-group/m-p/894931#M353519</guid>
      <dc:creator>brainupgraded</dc:creator>
      <dc:date>2023-09-19T14:56:26Z</dc:date>
    </item>
    <item>
      <title>Re: Selecting the first group within the same group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Selecting-the-first-group-within-the-same-group/m-p/894932#M353520</link>
      <description>It works perfectly. Thank you!</description>
      <pubDate>Tue, 19 Sep 2023 14:56:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Selecting-the-first-group-within-the-same-group/m-p/894932#M353520</guid>
      <dc:creator>brainupgraded</dc:creator>
      <dc:date>2023-09-19T14:56:53Z</dc:date>
    </item>
  </channel>
</rss>

