Come eseguire la corrispondenza fuzzy in sas (con esempio)


Spesso potresti voler unire due set di dati in SAS in base a stringhe che corrispondono in modo imperfetto.

Questo è spesso chiamato corrispondenza fuzzy .

Il modo più semplice per eseguire la corrispondenza fuzzy in SAS è utilizzare la funzione SOUNDEX con la funzione COMPGED .

Queste due funzioni vengono utilizzate per quantificare la somiglianza tra stringhe e possono essere utilizzate per “abbinare” stringhe simili.

L’esempio seguente mostra come utilizzare queste funzioni per eseguire la corrispondenza fuzzy in SAS.

Esempio: come eseguire la corrispondenza fuzzy in SAS

Supponiamo di avere il seguente set di dati in SAS che contiene informazioni sui nomi delle squadre e sui punti di vari giocatori di basket:

 /*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; 

E supponiamo di avere un altro set di dati con i nomi delle squadre e gli assist di vari giocatori di basket:

 /*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; 

Tieni presente che molti nomi di squadre in questo set di dati sono simili ma non esattamente uguali ai nomi delle squadre nel set di dati precedente.

Possiamo utilizzare la seguente sintassi in SAS per eseguire una corrispondenza fuzzy e riunire questi due set di dati in base a nomi di team simili:

 /*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; 

esempio di corrispondenza fuzzy in SAS

Le funzioni SOUNDEX e COMPGED sono in grado di abbinare i nomi delle squadre in base alla loro somiglianza e produrre un set di dati finale che unisce i due set di dati.

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre attività comuni in SAS:

SAS: come eseguire un’unione uno-a-molti
SAS: come utilizzare (in=a) nell’istruzione merge
SAS: come unire se A non è B

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *