<?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 Compare 2 numeric variables with 1 digit mismatch in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Compare-2-numeric-variables-with-1-digit-mismatch/m-p/103412#M21587</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;&amp;nbsp;&amp;nbsp; I am in situation like, i have to compare a numeric variable from flat file with a numeric variable in SAS Dataset. The trick is, if both the variable is not 100% match, then consider for 1 digit mismatch. For example,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FLAT_FILE_VAR_A&lt;/P&gt;&lt;P&gt;==============&lt;/P&gt;&lt;P&gt;123&lt;/P&gt;&lt;P&gt;456&lt;/P&gt;&lt;P&gt;789&lt;/P&gt;&lt;P&gt;799&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SAS_DATASET_VAR_A&lt;/P&gt;&lt;P&gt;==================&lt;/P&gt;&lt;P&gt;123&lt;/P&gt;&lt;P&gt;456&lt;/P&gt;&lt;P&gt;789&lt;/P&gt;&lt;P&gt;111&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Expecting Result&lt;/P&gt;&lt;P&gt;=============&amp;nbsp; &lt;/P&gt;&lt;P&gt;123&amp;nbsp;&amp;nbsp;&amp;nbsp; 100%Match&lt;/P&gt;&lt;P&gt;456&amp;nbsp;&amp;nbsp;&amp;nbsp; 100%Match&lt;/P&gt;&lt;P&gt;789&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 100%Match&lt;/P&gt;&lt;P&gt;799&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 80%Match&amp;nbsp; &amp;lt;-- this 7&lt;SPAN style="color: #ff0000;"&gt;&lt;STRONG&gt;9&lt;/STRONG&gt;&lt;/SPAN&gt;9 is one digit mismatch with SAS table value "7&lt;STRONG style="color: #ff0000;"&gt;8&lt;/STRONG&gt;9" &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; Could you please let me know , how i can achieve this result?? Kindly note for giving example purpose , i gave 3 bytes to variable A. In my file variable A has 9 digit numeric.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Prabakaran &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 18 Dec 2012 21:58:21 GMT</pubDate>
    <dc:creator>DPraba79</dc:creator>
    <dc:date>2012-12-18T21:58:21Z</dc:date>
    <item>
      <title>Compare 2 numeric variables with 1 digit mismatch</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Compare-2-numeric-variables-with-1-digit-mismatch/m-p/103412#M21587</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;&amp;nbsp;&amp;nbsp; I am in situation like, i have to compare a numeric variable from flat file with a numeric variable in SAS Dataset. The trick is, if both the variable is not 100% match, then consider for 1 digit mismatch. For example,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FLAT_FILE_VAR_A&lt;/P&gt;&lt;P&gt;==============&lt;/P&gt;&lt;P&gt;123&lt;/P&gt;&lt;P&gt;456&lt;/P&gt;&lt;P&gt;789&lt;/P&gt;&lt;P&gt;799&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SAS_DATASET_VAR_A&lt;/P&gt;&lt;P&gt;==================&lt;/P&gt;&lt;P&gt;123&lt;/P&gt;&lt;P&gt;456&lt;/P&gt;&lt;P&gt;789&lt;/P&gt;&lt;P&gt;111&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Expecting Result&lt;/P&gt;&lt;P&gt;=============&amp;nbsp; &lt;/P&gt;&lt;P&gt;123&amp;nbsp;&amp;nbsp;&amp;nbsp; 100%Match&lt;/P&gt;&lt;P&gt;456&amp;nbsp;&amp;nbsp;&amp;nbsp; 100%Match&lt;/P&gt;&lt;P&gt;789&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 100%Match&lt;/P&gt;&lt;P&gt;799&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 80%Match&amp;nbsp; &amp;lt;-- this 7&lt;SPAN style="color: #ff0000;"&gt;&lt;STRONG&gt;9&lt;/STRONG&gt;&lt;/SPAN&gt;9 is one digit mismatch with SAS table value "7&lt;STRONG style="color: #ff0000;"&gt;8&lt;/STRONG&gt;9" &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; Could you please let me know , how i can achieve this result?? Kindly note for giving example purpose , i gave 3 bytes to variable A. In my file variable A has 9 digit numeric.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Prabakaran &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 18 Dec 2012 21:58:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Compare-2-numeric-variables-with-1-digit-mismatch/m-p/103412#M21587</guid>
      <dc:creator>DPraba79</dc:creator>
      <dc:date>2012-12-18T21:58:21Z</dc:date>
    </item>
    <item>
      <title>Re: Compare 2 numeric variables with 1 digit mismatch</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Compare-2-numeric-variables-with-1-digit-mismatch/m-p/103413#M21588</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;1. Do an exact match first.&lt;/P&gt;&lt;P&gt;2. On those that aren't matched then use compged to see the distance and determine matches.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There's a good post on how to do that here by friedegg if you do some searching for fuzzy match or non-exact matching.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 18 Dec 2012 22:09:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Compare-2-numeric-variables-with-1-digit-mismatch/m-p/103413#M21588</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2012-12-18T22:09:40Z</dc:date>
    </item>
    <item>
      <title>Re: Compare 2 numeric variables with 1 digit mismatch</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Compare-2-numeric-variables-with-1-digit-mismatch/m-p/103414#M21589</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Check complev() function which can calculated a edit distance between two strings.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 19 Dec 2012 03:15:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Compare-2-numeric-variables-with-1-digit-mismatch/m-p/103414#M21589</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2012-12-19T03:15:16Z</dc:date>
    </item>
    <item>
      <title>Re: Compare 2 numeric variables with 1 digit mismatch</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Compare-2-numeric-variables-with-1-digit-mismatch/m-p/103415#M21590</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Here's an approach, but it may consume a lot of memory depending on how low a match rate you are willing to search for.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;First, your variables should be character, not numeric.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Second, create a series of formats out of SAS_DATASET_VAR_A:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;value $match3_ '123'='100%'&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '456'='100%'&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '789'='100%'&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '111'='100%'&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&lt;/P&gt;&lt;P&gt;value $match2_ '12*'='2 of 3'&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '1*3'='2 of 3&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '12*'='2 of 3&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '*23'='2 of 3&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '45*'='2 of 3&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '4*6'='2 of 3&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '*56'='2 of 3&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '78*'='2 of 3&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '7*9'='2 of 3&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '*89'='2 of 3&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '11*'='2 of 3&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '1*1'='2 of 3&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '*11'='2 of 3&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;While this can be automated using CNTLIN= data sets, you will have to use PROC SORT NODUPKEY before creating the second format because there will be duplicate entries.&amp;nbsp; (123 and 124 will both generate 12*, for example.)&amp;nbsp; Note that the formats get larger, the more wild cards you allow.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Finally, test:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; set have;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if put(ssn, $match3_.)='100%' then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; match_pattern=ssn;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; match_rate='100%&amp;nbsp;&amp;nbsp; ';&lt;/P&gt;&lt;P&gt;&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; delete;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; do star_position=1 to 3;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; match_pattern=ssn;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; substr(match_pattern, star_position, 1) = '*';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if put(match_pattern, $match2_.)='2 of 3' 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; match_rate='2 of 3';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp; delete;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;This is sample, untested code, but it giives you the idea.&amp;nbsp; I'm pretty sure hash tables instead of formats would work equally well, and might even consolidate everything into one step.&amp;nbsp; There would be one hash table for each level of match (100%, 80%, etc.).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Good luck.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 19 Dec 2012 15:12:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Compare-2-numeric-variables-with-1-digit-mismatch/m-p/103415#M21590</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2012-12-19T15:12:50Z</dc:date>
    </item>
  </channel>
</rss>

