
Les 2 visages de la fonction SUBSTR
février 26, 2008Définir une nouvelle variable à partir de x caractères d’une autre variable. Substituer, dans une variable texte, les x caractères à partir du zème. Ces deux thématiques fortes différentes sont traitées avec la même fonction SUBSTR. Selon qu’elle soit placée à gauche ou à droite de l’égalité, la fonction répond à un besoin différent.
1. Créer une nouvelle variable à partir d’un sous-ensemble d’une autre : l’application la plus courante de la fonction SUBSTR consiste à conserver un sous-ensemble d’une chaîne de caractères, en se référant à sa position de départ et à sa longueur, pour définir une nouvelle variable.
Notation : la fonction est composée de trois paramètres
-
le nom de la variable d’origine,
-
la position du premier caractère qui nous intéresse,
-
le nombre total de caractères à partir du point de départ (optionnel).
Exemple : dans l’exemple suivant, imaginez une variable TESTCASE. Les tests tc0101, tc0102 appartiennent au même groupe, tandis que tc0201 appartient à un groupe différent. Les deux premiers chiffres font référence au groupe. Pour sauvegarder ces chiffres dans une variable GRP, on utilise la fonction SUBSTR.
grp=substr(testcase,3,2);
Note : 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é.
grp=substr(testcase,3);
2. Remplacer une partie d’une chaîne de caractères : pour actualiser une variable dans un data step, la démarche sous SAS est fastidieuse. Dans un cas particulier, cependant, on peut l’éviter : changer un sous-ensemble d’une variable texte défini par sa position dans la chaîne et sa longueur.
Rappel, actualiser une variable dans un data step : dans un premier, la variable est renommée. Cette variable contient les valeurs d’origine, celle qui nous intéressent. On peut ainsi définir une nouvelle variable portant le nom d’origine puisque ce nom n’existe plus. Cette nouvelle variable prendra nos valeurs d’origine, plus les nouveautés voulues via une addition, une concaténation ou autre.
Exemple : on reprend l’exemple de la première section avec notre variable TESTCASE. La chaîne ‘tc’ commençant en position 1 et longues de 2 est remplacée par les caractères ‘AB’.
substr(testcase,1,2)=’AB’;
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. De plus, on ne peut substituer que parmi les caractères existants, blancs de début et fin de chaîne compris.
Bravo pour ton Blog il est vraiment clair, synthétique, utile, en français…
Je le consulte souvent.
Bravo et continue!
Yann
Ce site est une aubaine pour moi, je débute SAS 9 cette semaine …
La rédaction est claire, les explications limpides, le graphisme parfait et les photos pleines d’humour.
Bref « Que du bonheur ! »
Longue vie à « thesasreference » et Grand Merci.
[…] Les deux visages de la fonction SUBSTR […]
J’adore et me joins à tous pour vous confirmer que tous est clairement écris.
Intéressant !
j’ai une chaine numérique, (12345678), et je veux avoir simplement les 3 premières positions (123).
La fonction SUBSTR ne fonctionne pas. Pouvez vous m’aider? Merci
il suffira de donner la function ainsi: x=substr(‘12345678’, 1,3);
Voila
Bonjour,
J’aimerais effacer les 4 derniers caractères de toutes les observations d’une variable. Je ne vois pas comment faire, pourriez-vous m’aider ?
Merci
[…] Les 2 visages de la fonction SUBSTR […]