<?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 Selectively deleting observations within a group in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Selectively-deleting-observations-within-a-group/m-p/929100#M365573</link>
    <description>&lt;P&gt;Esteemed Advisers&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I need some help with selectively deleting observations by groups.&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &lt;/SPAN&gt;Below are exemplar “have”and “want” datasets.&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &lt;/SPAN&gt;The goal is to retain only one Member that contains “A” in both the Alpha and Beta Groups (which one is retained is irrelevant as they are redundant). &lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN class="Apple-converted-space"&gt;Thanks for taking a look and any advice you have to offer,.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Gene&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input Group $ Member $;
Alpha A1
Alpha A2
Alpha B1
Alpha B2
Alpha A3
Alpha C1
Alpha C2
Beta A1
Beta A2
Beta D1
Beta D2
Beta E1
Beta E2
Beta A3
;

data want;
input Group $ Member $;
Alpha A1
Alpha B1
Alpha B2
Alpha C1
Alpha C2
Beta A1
Beta D1
Beta D2
Beta E1
Beta E2
;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Mon, 20 May 2024 23:55:02 GMT</pubDate>
    <dc:creator>genemroz</dc:creator>
    <dc:date>2024-05-20T23:55:02Z</dc:date>
    <item>
      <title>Selectively deleting observations within a group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Selectively-deleting-observations-within-a-group/m-p/929100#M365573</link>
      <description>&lt;P&gt;Esteemed Advisers&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I need some help with selectively deleting observations by groups.&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &lt;/SPAN&gt;Below are exemplar “have”and “want” datasets.&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &lt;/SPAN&gt;The goal is to retain only one Member that contains “A” in both the Alpha and Beta Groups (which one is retained is irrelevant as they are redundant). &lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN class="Apple-converted-space"&gt;Thanks for taking a look and any advice you have to offer,.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Gene&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input Group $ Member $;
Alpha A1
Alpha A2
Alpha B1
Alpha B2
Alpha A3
Alpha C1
Alpha C2
Beta A1
Beta A2
Beta D1
Beta D2
Beta E1
Beta E2
Beta A3
;

data want;
input Group $ Member $;
Alpha A1
Alpha B1
Alpha B2
Alpha C1
Alpha C2
Beta A1
Beta D1
Beta D2
Beta E1
Beta E2
;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 20 May 2024 23:55:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Selectively-deleting-observations-within-a-group/m-p/929100#M365573</guid>
      <dc:creator>genemroz</dc:creator>
      <dc:date>2024-05-20T23:55:02Z</dc:date>
    </item>
    <item>
      <title>Re: Selectively deleting observations within a group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Selectively-deleting-observations-within-a-group/m-p/929103#M365574</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input Group $ Member $;
cards;
Alpha A1
Alpha A2
Alpha B1
Alpha B2
Alpha A3
Alpha C1
Alpha C2
Beta A1
Beta A2
Beta D1
Beta D2
Beta E1
Beta E2
Beta A3
;
proc sql;
create table temp as
select distinct member from have group by member having count(distinct group)&amp;gt;1;

create table want as
select * from have where member in (select member from temp(obs=1))
union
select * from have where member not in (select member from temp);
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 21 May 2024 00:34:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Selectively-deleting-observations-within-a-group/m-p/929103#M365574</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2024-05-21T00:34:55Z</dc:date>
    </item>
    <item>
      <title>Re: Selectively deleting observations within a group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Selectively-deleting-observations-within-a-group/m-p/929111#M365581</link>
      <description>&lt;P&gt;Here another option. Not as smart as what&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/18408"&gt;@Ksharp&lt;/a&gt;&amp;nbsp;proposes but should perform better (less sorting and lookup) in case you've got a lot of data and performance is relevant to you.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  input Group $ Member $;
cards;
Alpha A1
Alpha A2
Alpha B1
Alpha B2
Alpha A3
Alpha C1
Alpha C2
Beta A1
Beta A2
Beta D1
Beta D2
Beta E1
Beta E2
Beta A3
;

proc sort 
  data=have(keep=group member where=(group in ('Alpha','Beta') and member =:'A')) 
  out=inter 
  presorted;
  by group member;
run;
&lt;BR /&gt;%let memA_sel=;
data _null_;
  merge 
    inter(in=ina where=(group='Alpha'))
    inter(in=inb where=(group='Beta' ))
    ;
  by member;
  if ina and inb then
    do;
      call symputx('memA_sel',member);
      stop;
    end;
run;

data want;
  set have;
  if group in ('Alpha','Beta') and member=:'A' and member ne "&amp;amp;memA_sel" then delete;
run;

proc print data=want;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;If you can be sure that your data have is already sorted by group and member (or by member as first variable) then use below code version.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let memA_sel=;
data _null_;
  merge 
    have(in=ina where=(group='Alpha' and member =:'A'))
    have(in=inb where=(group='Beta'  and member =:'A'))
    ;
  by member;
  if ina and inb then
    do;
      call symputx('memA_sel',member);
      stop;
    end;
run;

data want;
  set have;
  if group in ('Alpha','Beta') and member=:'A' and member ne "&amp;amp;memA_sel" then delete;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 21 May 2024 03:24:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Selectively-deleting-observations-within-a-group/m-p/929111#M365581</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2024-05-21T03:24:18Z</dc:date>
    </item>
    <item>
      <title>Re: Selectively deleting observations within a group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Selectively-deleting-observations-within-a-group/m-p/929115#M365583</link>
      <description>&lt;P&gt;Assuming the data is sorted by GROUP you just to count the number of names MEMBER starts with A per group.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
  set have;
  by group ;
  if first.group then n_a=0;
  if member=:'A' then do;
    n_a+1;
    if n_a&amp;gt;1 then delete;
  end;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 21 May 2024 03:44:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Selectively-deleting-observations-within-a-group/m-p/929115#M365583</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2024-05-21T03:44:29Z</dc:date>
    </item>
    <item>
      <title>Re: Selectively deleting observations within a group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Selectively-deleting-observations-within-a-group/m-p/929159#M365599</link>
      <description>&lt;P&gt;Thanks to all who offered solutions. &amp;nbsp;All were valid and I chose to accept Tom's only because of its parsimonious use of code.&lt;/P&gt;</description>
      <pubDate>Tue, 21 May 2024 14:26:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Selectively-deleting-observations-within-a-group/m-p/929159#M365599</guid>
      <dc:creator>genemroz</dc:creator>
      <dc:date>2024-05-21T14:26:49Z</dc:date>
    </item>
  </channel>
</rss>

