Comment utiliser la fonction PRXMATCH dans SAS (avec exemples)
Vous pouvez utiliser la fonction PRXMATCH dans SAS pour rechercher un modèle spécifique dans une chaîne et renvoyer la position à laquelle le modèle est trouvé.
Cette fonction utilise la syntaxe de base suivante :
PRXMATCH(expression régulière, source)
où:
- expression régulière : expression régulière qui spécifie le modèle à rechercher
- source : Nom de la variable à rechercher
Les exemples suivants montrent trois manières courantes d’utiliser cette fonction en pratique avec l’ensemble de données suivant dans SAS :
/*create dataset*/
data my_data;
input team $ points;
datalines;
Mavs 22
mavs 14
Warriors 23
Mavs 19
warriors 34
MAVS 40
WARRIORS 39
;
run;
/*view dataset*/
proc print data=my_data;
Exemple 1 : utilisez PRXMATCH pour rechercher la position d’un motif dans une chaîne
Le code suivant montre comment utiliser la fonction PRXMATCH pour créer une nouvelle colonne appelée position qui contient la position où la chaîne « avs » apparaît dans la colonne équipe :
/*create new dataset*/
data new_data;
set my_data;
position = prxmatch("/avs/", team);
run;
/*view new dataset*/
proc print data=new_data;
À partir du résultat, nous pouvons voir :
- La première ligne contient le motif « avs » dans la colonne équipe commençant à la position 2 de la chaîne.
- La deuxième ligne contient le motif « avs » dans la colonne d’équipe commençant la position 2 de la chaîne.
- La troisième ligne ne contient pas le modèle « avs » dans la colonne équipe donc une valeur de 0 est renvoyée.
Et ainsi de suite.
Exemple 2 : utilisez PRXMATCH pour vérifier si la chaîne contient un motif
Le code suivant montre comment utiliser la fonction PRXMATCH pour créer une nouvelle colonne appelée mavs_flag qui contient une valeur de 1 si la chaîne de la colonne d’équipe contient « avs » n’importe où dans la chaîne et une valeur de 0 si ce n’est pas le cas :
/*create new dataset*/
data new_data;
set my_data;
if prxmatch("/Mavs/i", team) > 0 then mavs_flag = 1;
else mavs_flag = 0;
run;
/*view new dataset*/
proc print data=new_data;
Notez que le i à la fin de l’expression régulière spécifie que SAS doit effectuer une recherche insensible à la casse.
Oubliez simplement le i si vous souhaitez plutôt effectuer une recherche sensible à la casse.
Exemple 3 : utilisez PRXMATCH pour filtrer l’ensemble de données pour les lignes contenant un modèle
Le code suivant montre comment utiliser la fonction PRXMATCH pour créer un nouvel ensemble de données contenant uniquement les lignes de my_data comportant la chaîne « Mavs » (insensible à la casse) dans la colonne d’équipe :
/*create dataset*/
data original_doriginal_data;
Notez que chacune des lignes du nouvel ensemble de données contient « Mavs » dans la colonne d’équipe.
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans SAS :
Comment extraire des nombres d’une chaîne dans SAS
Comment supprimer les virgules d’une chaîne dans SAS
Comment diviser des chaînes par délimiteur dans SAS