h1

La concaténation : 4 fonctions SAS 9

avril 16, 2008

Mettre des morceaux de textes à la suite les uns des autres et enregistrer le tout dans une variable, c’est ce qu’on appelle la concaténation. D’un côté, il y a la double barre. De l’autre côté, il y a les fonctions « CAT » disponibles depuis SAS 9. Voici donc un rapide tour d’horizon de ces notations.

A titre d’exemple, si vous avez plusieurs variables pour identifier de manière unique une ligne d’observations, vous pouvez construire une variable unique à partir d’une concaténation et ainsi manier plus facilement certaines fonctionnalités de la procédure SQL.

Pour illustrer ce sujet, on utilisera une variable x et une variable z sans blanc aux extrémités et une variable y avec des blancs avant et après sont utilisés.

x = ‘Pays’;
y = ‘  UK  ‘;
z = ‘2008’;

A chaque fois, plusieurs notations sont proposées. Toutes donnent le même résultat.

1. La traditionnelle double barre : qu’il s’agisse de la double barre || ou des deux points d’exclamations !!, la concaténation requiert des valeurs textes (SAS Online Doc. : Section sur « Concatenation Operator »). Il faudra donc convertir les valeurs numériques avec une instruction PUT par exemple.

a1 = x ||  y || z ;

a1 = ‘Pays’ || ‘  UK  ‘ || ‘2008’;

a1 = ‘Pays’ || y || z;

a1 = ‘Pays UK 2008’;

Cette notation sert aussi pour la concaténation de matrices (SAS IML) et la définition d’un CALL EXECUTE.

2. Les fonctions CATS, CATX, CATS et CATT : ces fonctions varient en fonction de la place que l’on souhaite accorder aux blancs des différents maillons de la chaîne et si on souhaite ajouter des séparateurs. Elles disposent au moins d’autant de paramètres que de maillons formant la chaîne à créer. Chaque morceau de texte est séparé par une virgule. Si en plus on souhaite ajouter un séparateur entre les différents composants, un paramètre supplémentaire est listé en tête.

Sans blanc aux extrémités : personnellement, j’utilise le plus souvent la fonction CATS qui enlève les blancs aux extrémités. Cela revient à faire d’utiliser la double barre sans agir sur les maillons de la chaînes à construire .

a2 = cats(x,y,z) ;

a2 = cats(‘Pays’,’  UK  ‘,’2008’);

a2 = cats(‘Pays’,y,z);

a2 = ‘PaysUK2008’;

Ajouter un séparateur : la fonction CATX enlève les blancs de début et de fin et ajoute des séparateurs entre chaque « mot ». Le symbole utilisé comme séparateur est le premier paramètre de la fonction.

a3 = catx(‘-‘,x,y,z) ;

a3 = catx(‘-‘,’Pays’,’  UK  ‘,’2008’);

a3 = catx(‘-‘,’Pays’,y,z);

a3 = ‘Pays-UK-2008’;

Garder tous les blancs : la fonction CAT n’enlève pas les blancs au début et fin de texte de chacun des éléments de la concaténation.

a4 = cat(x,y,z) ;

a4 = cat(‘Pays’,’  UK  ‘,’2008’);

a4 = cat(‘Pays’,y,z);

a4 = ‘Pays  UK  2008’;

Enlever les blancs de fin uniquement : la fonction CATT enlève les blancs en fin de chaîne. Le dernier T de CATT fait référence à « Trailing Blanks » c’est-à-dire les blancs de fin de chaîne.

a5 = catt(x,y,z) ;

a5 = catt(‘Pays’,’  UK  ‘,’2008’);

a5 = catt(‘Pays’,y,z);

a5 = ‘Pays  UK2008’;

Pour ma part, j’ai du mal à me souvenir qui fait quoi. L’important, dans un premier temps, est de savoir que ces fonctions existent. On recherche après, en tant voulu, l’information sur les nuances. Si, vous avez trouvez un moyen mnémotechnique pour mémoriser les différences, n’hésitez pas à le faire savoir.

4 commentaires

  1. CAT avec ses variantes (J’ai utilisé dans mon cas CATX) permet de concaténer le contenu de plusieurs variables en série (comme COL1, COL2, COL3.,.,.., COLn. Dans ce cas la syntaxe est la suivante :
    CATX(SP, OF COL1-COLn), SP étant le séparateur.Cette syntaxe est utile dans une macro ou le nombre de variables varie en fonction du DATASET avec n devenant dans ce cas une variable macro contenant le nombre de variables du Dataset.


  2. Et la concaténation de valeurs numériques ????


  3. Moyen (plus ou moins) mnémotechnique :
    – Cat : fonction de base (équivalent à ||)
    – CatS : équivalent de Cat + Strip (Strip étant la fonction permettant de « déshabiller » la chaîne des éventuels blancs initiaux et finaux)
    – CatT : équivalent de Cat + Trim (Trim étant la fonction permettant de supprimer la chaîne des éventuels blancs finaux uniquement)


  4. […] La concaténation : 4 fonctions SAS 9 […]



Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

%d blogueurs aiment cette page :