Pour savoir si un mot est présent dans une chaîne de caractère, il y a la fonction INDEX. Celle-ci retourne la position d’un « mot » dans une chaîne de caractère. Parmi les fonctions qui lisent les observations textuelles sous SAS, la fonction INDEX fait probablement partie du top 10 des fonctions les plus usuelles.
1. Deux paramètres de base
La chaîne de caractères à analyser est le premier paramètre de la fonction INDEX. Comme toute fonction, elle définie au choix par :
- le texte entre guillemets
- la variable caractère contenant toutes les observations à traiter.
Le texte à trouver est le second paramètre de la fonction INDEX. On le donne généralement entre guillemets.
2. Que retourne la fonction ?
La fonction retourne un nombre : le nombre généré par la fonction INDEX représente la position de la première lettre du mot recherché. Si plusieurs mots sont disponibles dans la chaînes, SAS s’arrête au premier.
Et si aucun mot n’est présent ? Dans le cas où le mot n’est trouvé, la fonction INDEX retourne la valeur zéro. Ainsi si INDEX retourne une valeur supérieure à zéro, le mot est présent dans la chaîne de caractère, sinon il est absent.
3. Minuscules ou majuscules
La lettre A (majuscule) et a (minuscule) ne sont pas identiques. La fonction est sensible à la case.
Si la case de la chaîne de caractère vous importe peu, considérez la chaîne de caractères mise en majuscule (par exemple) avec la fonction UPCASE.
4. Un exemple
Dans l’exemple ci-dessous, le data set ONE a une ligne d’observation et trois variables X, Y et Z.
La variable Y retourne la position du mot ‘de’ (minuscule) dans la chaîne de caractères ‘ABC def DEG’. Il s’agit donc de la position 5.
La variable Z retourne la position du mot ‘DE’ (majuscule) dans la chaîne de caractères ‘ABC def DEG’. Il s’agit donc de la position 9.
data one;
x=‘ABC def DEG’;
y=index(x,’de’);
z=index(x,’DE’);
run;