Les deux visages de la fonction SUBSTR
By : Véronique Bourcier -

Placée à droite de l’équation, la fonction SUBSTR coupe une partie de texte en précisant à partir de quelle position et pour combien de caractères. Placée à gauche de l’équation, elle sert à remplacer un texte par un autre. À la différence des fonctions tranwrd
et translate
, la position de départ du texte doit impérativement être connue.
1. Syntaxe
La fonction est composée de trois paramètres :
- le texte d’origine présent entre guillemets ou via un nom de variable
- la position du premier caractère qui nous intéresse
- le nombre total de caractères à partir du point de départ (optionnel).
Si le nombre de caractères à retenir n’est pas précisé par un troisième paramètre, c’est tout le reste de la chaîne à partir de la position donnée en second paramètre qui est conservé.
2. Exemple avec la fonction SUBSTR à droite de l’équation
Dans le code ci-dessous, nous avons une variable appelée testcase
avec trois valeurs : tc0101
, tc0102
appartiennent au même groupe, tandis que tc0201
appartient à un groupe différent. Nous créons une variable appelée gré
. Cette variable prend les valeurs 01
pour les deux premières observations et 02
pour la troisième, c’est-à-dire les troisième et quatrième caractères de la variable d’origine.
data exemple; length testcase $6; testcase='tc0101'; output; testcase='tc0102'; output; testcase='tc0201'; output; run;
data exemple; set exemple; length grp $2; grp=substr(testcase,3,2); run;
Si le nombre de caractères à retenir n’est pas précisé par un troisième paramètre, c’est tout le reste de la chaîne à partir de la position donnée en second paramètre qui est conservée.
grp=substr(testcase,3);
3. Exemple de la fonction substr
à gauche de l’équation
Reprend l’exemple de la première section avec notre variable testcase
. Le texte 'tc'
commençant en position 1 et longue 2 est remplacée par les caractères 'AB'
.
data exemple; set exemple; substr(testcase,1,2)='AB'; run;
Notez que la valeur de substitution doit être de la même longueur. Si elle est plus grande, les caractères seront ignorés. Si elle est plus petite, des blancs remplaceront les espaces manquants.