Comment effectuer une correspondance floue dans SAS (avec exemple)



Souvent, vous souhaiterez peut-être réunir deux ensembles de données dans SAS sur la base de chaînes imparfaitement correspondantes.

C’est ce qu’on appelle souvent la correspondance floue .

Le moyen le plus simple d’effectuer une correspondance floue dans SAS consiste à utiliser la fonction SOUNDEX avec la fonction COMPGED .

Ces deux fonctions sont utilisées pour quantifier la similarité entre des chaînes et peuvent être utilisées pour « faire correspondre » des chaînes similaires.

L’exemple suivant montre comment utiliser ces fonctions pour effectuer une correspondance floue dans SAS.

Exemple : Comment effectuer une correspondance floue dans SAS

Supposons que nous disposions de l’ensemble de données suivant dans SAS qui contient des informations sur les noms d’équipe et les points de divers joueurs de basket-ball :

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

Et supposons que nous ayons un autre ensemble de données avec les noms d’équipe et les passes décisives de divers joueurs de basket-ball :

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

Notez que de nombreux noms d’équipe dans cet ensemble de données sont similaires mais pas exactement identiques aux noms d’équipe dans l’ensemble de données précédent.

Nous pouvons utiliser la syntaxe suivante dans SAS pour effectuer une correspondance floue et réunir ces deux ensembles de données en fonction de noms d’équipe similaires :

/*use fuzzy matching to merge datasets based on similar team names*/
data data3;                                       
  set data1;
  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; /*drop unnecessary variables*/
      output;
    end;
  end;
run;

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

exemple de correspondance floue dans SAS

Les fonctions SOUNDEX et COMPGED sont capables de faire correspondre les noms d’équipe en fonction de leur similarité et de produire un ensemble de données final qui fusionne les deux ensembles de données.

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans SAS :

SAS : Comment effectuer une fusion un-à-plusieurs
SAS : Comment utiliser (in=a) dans l’instruction de fusion
SAS : Comment fusionner si A n’est pas B

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *