<?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 Remove matching ID  using hash in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Remove-matching-ID-using-hash/m-p/667542#M199917</link>
    <description>&lt;P&gt;Hello,&lt;/P&gt;
&lt;P&gt;I have a dataset called "HAVE" which has 8 phone number columns for each prod ID. There are some invalid phone numbers in this dataset that I want to remove. I also have a list of invalid phones numbers and I am calling it as "invalid_numbers". Basically I want join my "have" against "invalid_numbers" on ID and phone number and if a match found I want to remove that phone number from the have datasaet for that specific ID.&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;I am new to hashing/array concept and I not getting my desired output. Not sure what I am doing wrong and couldn't it figure out.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Could someone please help? Thanks.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;Data have;
input @1 ID :$4. @6 tp1 $10. @17 tp2 $10. @28 tp3 $10. @39 tp4 $10. @50 tp5 $10. @61 tp6 $10. @72 tp7 $10. @83 tp8 :$10.  ;
infile cards missover ;
cards;
1325 5872584458	2478569877	                                         					
5489 8658656767 		              6048795248 
5478 2358984155 							
8799 4897568698                                                                         3697489567
;
run;	



Data invalid_numbers;
input ID :$4. inv_phn $10.;
infile cards;
cards;
1325 5872584458
8799 3697489567
2578 7879565688
3287 9831765765
8974 2478569877
9876 2579375824
;
Quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;U&gt;&lt;STRONG&gt;Output:&lt;/STRONG&gt;&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="615"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;ID&lt;/TD&gt;
&lt;TD width="77"&gt;tp1&lt;/TD&gt;
&lt;TD width="77"&gt;tp2&lt;/TD&gt;
&lt;TD width="64"&gt;tp3&lt;/TD&gt;
&lt;TD width="77"&gt;tp4&lt;/TD&gt;
&lt;TD width="64"&gt;tp5&lt;/TD&gt;
&lt;TD width="64"&gt;tp6&lt;/TD&gt;
&lt;TD width="64"&gt;tp7&lt;/TD&gt;
&lt;TD width="64"&gt;tp8&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1325&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;2478569877&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;5489&lt;/TD&gt;
&lt;TD&gt;8658656767&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;6048795248&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;5478&lt;/TD&gt;
&lt;TD&gt;2358984155&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;8799&lt;/TD&gt;
&lt;TD&gt;4897568698&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data want;&lt;BR /&gt;set have;&lt;BR /&gt;array phn tp1-tp8;&lt;BR /&gt;if _N_=1 then do;&lt;BR /&gt;dcl hash H(dataset:'invalid_numbers');&lt;BR /&gt;H.definekey('ID','inv_phn');&lt;BR /&gt;H.definedone(); &lt;BR /&gt;if 0 then set invalid_numbers;&lt;BR /&gt;end;&lt;BR /&gt;do over phn;&lt;BR /&gt;&amp;nbsp;if H.find() = 0 then call missing(phn);&lt;BR /&gt;end;&lt;BR /&gt;drop inv_phn;&lt;BR /&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 07 Jul 2020 19:07:11 GMT</pubDate>
    <dc:creator>vicky07</dc:creator>
    <dc:date>2020-07-07T19:07:11Z</dc:date>
    <item>
      <title>Remove matching ID  using hash</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Remove-matching-ID-using-hash/m-p/667542#M199917</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;
&lt;P&gt;I have a dataset called "HAVE" which has 8 phone number columns for each prod ID. There are some invalid phone numbers in this dataset that I want to remove. I also have a list of invalid phones numbers and I am calling it as "invalid_numbers". Basically I want join my "have" against "invalid_numbers" on ID and phone number and if a match found I want to remove that phone number from the have datasaet for that specific ID.&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;I am new to hashing/array concept and I not getting my desired output. Not sure what I am doing wrong and couldn't it figure out.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Could someone please help? Thanks.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;Data have;
input @1 ID :$4. @6 tp1 $10. @17 tp2 $10. @28 tp3 $10. @39 tp4 $10. @50 tp5 $10. @61 tp6 $10. @72 tp7 $10. @83 tp8 :$10.  ;
infile cards missover ;
cards;
1325 5872584458	2478569877	                                         					
5489 8658656767 		              6048795248 
5478 2358984155 							
8799 4897568698                                                                         3697489567
;
run;	



Data invalid_numbers;
input ID :$4. inv_phn $10.;
infile cards;
cards;
1325 5872584458
8799 3697489567
2578 7879565688
3287 9831765765
8974 2478569877
9876 2579375824
;
Quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;U&gt;&lt;STRONG&gt;Output:&lt;/STRONG&gt;&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="615"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;ID&lt;/TD&gt;
&lt;TD width="77"&gt;tp1&lt;/TD&gt;
&lt;TD width="77"&gt;tp2&lt;/TD&gt;
&lt;TD width="64"&gt;tp3&lt;/TD&gt;
&lt;TD width="77"&gt;tp4&lt;/TD&gt;
&lt;TD width="64"&gt;tp5&lt;/TD&gt;
&lt;TD width="64"&gt;tp6&lt;/TD&gt;
&lt;TD width="64"&gt;tp7&lt;/TD&gt;
&lt;TD width="64"&gt;tp8&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1325&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;2478569877&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;5489&lt;/TD&gt;
&lt;TD&gt;8658656767&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;6048795248&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;5478&lt;/TD&gt;
&lt;TD&gt;2358984155&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;8799&lt;/TD&gt;
&lt;TD&gt;4897568698&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data want;&lt;BR /&gt;set have;&lt;BR /&gt;array phn tp1-tp8;&lt;BR /&gt;if _N_=1 then do;&lt;BR /&gt;dcl hash H(dataset:'invalid_numbers');&lt;BR /&gt;H.definekey('ID','inv_phn');&lt;BR /&gt;H.definedone(); &lt;BR /&gt;if 0 then set invalid_numbers;&lt;BR /&gt;end;&lt;BR /&gt;do over phn;&lt;BR /&gt;&amp;nbsp;if H.find() = 0 then call missing(phn);&lt;BR /&gt;end;&lt;BR /&gt;drop inv_phn;&lt;BR /&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 07 Jul 2020 19:07:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Remove-matching-ID-using-hash/m-p/667542#M199917</guid>
      <dc:creator>vicky07</dc:creator>
      <dc:date>2020-07-07T19:07:11Z</dc:date>
    </item>
    <item>
      <title>Re: Remove matching ID  using hash</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Remove-matching-ID-using-hash/m-p/667545#M199920</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
Data have;
input @1 ID :$4. @6 tp1 $10. @17 tp2 $10. @28 tp3 $10. @39 tp4 $10. @50 tp5 $10. @61 tp6 $10. @72 tp7 $10. @83 tp8 :$10.  ;
infile cards missover ;
cards;
1325 5872584458	2478569877	                                         					
5489 8658656767 		              6048795248 
5478 2358984155 							
8799 4897568698                                                                         3697489567
;
run;	



Data invalid_numbers;
input ID :$4. inv_phn $10.;
infile cards;
cards;
1325 5872584458
8799 3697489567
2578 7879565688
3287 9831765765
8974 2478569877
9876 2579375824
;
run;
data want;
set have;
array phn tp1-tp8;
if _N_=1 then do;
dcl hash H(dataset:'invalid_numbers');
H.definekey('ID','inv_phn');
H.definedone();
if 0 then set invalid_numbers;
end;
do over phn;
 inv_phn=phn;
 if H.find() = 0 then call missing(phn);
end;
drop inv_phn;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 07 Jul 2020 19:24:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Remove-matching-ID-using-hash/m-p/667545#M199920</guid>
      <dc:creator>smantha</dc:creator>
      <dc:date>2020-07-07T19:24:18Z</dc:date>
    </item>
    <item>
      <title>Re: Remove matching ID  using hash</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Remove-matching-ID-using-hash/m-p/667551#M199925</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want(drop=inv_phn);
   if 0 then set invalid_numbers;
   if _N_ = 1 then do;
      dcl hash h (dataset : "invalid_numbers");
      h.definekey (all : 'Y');
      h.definedone ();
   end;

   set have;
   array tp tp:;
   do over tp;
      if h.check(key : ID, key : tp) = 0 then call missing(tp);
   end;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 07 Jul 2020 19:42:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Remove-matching-ID-using-hash/m-p/667551#M199925</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2020-07-07T19:42:26Z</dc:date>
    </item>
    <item>
      <title>Re: Remove matching ID  using hash</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Remove-matching-ID-using-hash/m-p/667828#M200070</link>
      <description>Thanks you very much!!</description>
      <pubDate>Wed, 08 Jul 2020 19:01:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Remove-matching-ID-using-hash/m-p/667828#M200070</guid>
      <dc:creator>vicky07</dc:creator>
      <dc:date>2020-07-08T19:01:20Z</dc:date>
    </item>
    <item>
      <title>Re: Remove matching ID  using hash</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Remove-matching-ID-using-hash/m-p/667829#M200071</link>
      <description>Thank You!!</description>
      <pubDate>Wed, 08 Jul 2020 19:02:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Remove-matching-ID-using-hash/m-p/667829#M200071</guid>
      <dc:creator>vicky07</dc:creator>
      <dc:date>2020-07-08T19:02:02Z</dc:date>
    </item>
  </channel>
</rss>

