SAS : la différence entre FIND et INDEX
Vous pouvez utiliser les fonctions FIND et INDEX dans SAS pour renvoyer la position du premier caractère d’une sous-chaîne qui apparaît dans une chaîne.
La différence entre ces fonctions est que la fonction FIND vous permet de faire deux choses que la fonction INDEX ne peut pas faire :
- FIND vous permet d’effectuer une recherche insensible à la casse.
- FIND vous permet de spécifier une position de départ pour la recherche.
Les exemples suivants illustrent la différence entre les fonctions FIND et INDEX en pratique avec l’ensemble de données suivant dans SAS qui contient une colonne de phrases :
/*create dataset*/
data original_data;
input phrase $40.;
datalines;
A pig is my favorite animal
My name is piglet
Pigs are so cute
Here is a baby pig
His name is piggie
;
run;
/*view dataset*/
proc print data=original_data;
Exemple 1 : Utilisation de FIND et INDEX sans différences
Le code suivant montre comment utiliser les fonctions FIND et INDEX pour rechercher la position de la première occurrence de la sous-chaîne « pig » dans la colonne d’expression :
/*find position of first occurrence of 'pig' in phrase column*/
data new_data;
set original_data;
find_pig = find(phrase, 'pig');
index_pig = index(phrase, 'pig');
run;
/*view results*/
proc print data=new_data;
Notez que les fonctions FIND et INDEX renvoient exactement les mêmes résultats.
Les colonnes find_pig et index_pig afficher la position de la première occurrence de la sous-chaîne « cochon » dans la colonne de phrase .
Exemple 2 : Utilisation de FIND et INDEX avec une recherche insensible à la casse
Le code suivant montre comment utiliser les fonctions FIND et INDEX pour rechercher la position de la première occurrence du mot « PIG » dans la colonne d’expression :
/*find position of first occurrence of 'PIG' in phrase column*/
data new_data;
set original_data;
find_pig = find(phrase, 'PIG', 'i');
index_pig = index(phrase, 'PIG');
run;
/*view results*/
proc print data=new_data;
En utilisant le modificateur « i » dans la fonction FIND , nous avons pu effectuer une recherche insensible à la casse de la sous-chaîne « PIG » dans la colonne de phrases.
Cependant, la fonction INDEX n’est pas en mesure d’effectuer une recherche insensible à la casse, elle a donc simplement renvoyé 0 pour chaque ligne puisque la sous-chaîne majuscule « PIG » n’existait dans aucune phrase.
Exemple 3 : Utilisation de FIND et INDEX avec une position de départ spécifique
Le code suivant montre comment utiliser la fonction FIND pour rechercher la sous-chaîne « cochon » dans la colonne de phrases commençant à la position 5 alors que la fonction INDEX n’est pas du tout capable d’utiliser une position de départ spécifique :
/*find position of first occurrence of 'pig' in phrase column starting at position 5*/
data new_data;
set original_data;
find_pig = find(phrase, 'pig', 5);
index_pig = index(phrase, 'pig');
run;
/*view results*/
proc print data=new_data;
La fonction find_pig recherche la sous-chaîne ‘pig’ à partir de la position 5 de la colonne phrase .
La fonction index_pig recherche simplement la sous-chaîne « cochon » n’importe où dans la colonne de phrase puisqu’elle n’est pas capable de spécifier une position de départ pour la recherche.
Ressources additionnelles
Les didacticiels suivants expliquent comment utiliser d’autres fonctions courantes dans SAS :
Comment utiliser la fonction SUBSTR dans SAS
Comment utiliser la fonction COMPRESS dans SAS
Comment utiliser la fonction COALESCE dans SAS