Les deux visages de la fonction SUBSTR

Les deux visages de la fonction SUBSTR

By : -

Les deux visages de la fonction SUBSTR

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.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.

8 + quinze =