Fuzzy matching uitvoeren in sas (met voorbeeld)


Vaak wilt u mogelijk twee sets gegevens samenvoegen in SAS op basis van niet perfect overeenkomende tekenreeksen.

Dit wordt vaak fuzzy matching genoemd.

De eenvoudigste manier om fuzzy matching uit te voeren in SAS is door de SOUNDEX- functie te gebruiken met de COMPGED- functie.

Deze twee functies worden gebruikt om de gelijkenis tussen strings te kwantificeren en kunnen worden gebruikt om vergelijkbare strings te „matchen“.

In het volgende voor beeld ziet u hoe u deze functies kunt gebruiken om fuzzy matching uit te voeren in SAS.

Voorbeeld: hoe u fuzzy matching uitvoert in SAS

Stel dat we de volgende dataset in SAS hebben die informatie bevat over de teamnamen en punten van verschillende basketbalspelers:

 /*create first dataset*/     
data data1;
  input team $points;
  datalines ;
Mavs 19
Nets 22
Kings 34
Warriors 19
Magic 32   
;
run ;
/*view dataset*/
proc print data =data1; 

En stel dat we nog een dataset hebben met de teamnamen en assists van verschillende basketbalspelers:

 /*create second dataset*/     
data data2;
  input team $assists;
  datalines ;
Netts 8
Majick 7
Keengs 8
Warriors 12
Mavs 4    
;
run ;
/*view dataset*/
proc print data =data2; 

Merk op dat veel teamnamen in deze dataset vergelijkbaar zijn, maar niet precies hetzelfde als de teamnamen in de vorige dataset.

We kunnen de volgende syntaxis in SAS gebruiken om een fuzzy match uit te voeren en deze twee datasets samen te brengen op basis van vergelijkbare teamnamen:

 /*use fuzzy matching to merge datasets based on similar team names*/
data data3;                                       
  setdata1 ;
  tmp1= soundex (team); /*encode team names from data1 */
  do i=1 to nobs;     
    set data2( rename =(team=team2)) point =i nobs =nobs;        
    tmp2= soundex (team2); /*encode team names from data2* /
    dif= compged (tmp1,tmp2); /*determine similarity between team names */
    if dif<=50 then do ;
      drop i tmp1 tmp2 dif; /*dr op unnecessary variables*/
      output ;
    end ;
  end ;
run ;

/*view resulting dataset*/
proc print data=data3; 

voorbeeld van fuzzy matching in SAS

De SOUNDEX- en COMPGED- functies kunnen teamnamen matchen op basis van hun gelijkenis en een definitieve dataset produceren die de twee datasets samenvoegt.

Aanvullende bronnen

In de volgende zelfstudies wordt uitgelegd hoe u andere veelvoorkomende taken in SAS kunt uitvoeren:

SAS: Hoe u een één-op-veel-samenvoeging uitvoert
SAS: Hoe (in=a) te gebruiken in een merge-instructie
SAS: Hoe te fuseren als A niet B is

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert