logo

SAS/BASE : Sélection des premières lettres de chaque mot d’une chaîne de caractères

Bonjour,

A partir d’une variable texte, j’ai besoin d’extraire les premières lettres de chaque mot de la chaine de caractères. Exemples : à partir de

variable1
Il fait beau
Toto fait ses devoirs

je souhaite obtenir

variable2
IFB
TFSD

Existe-t-il une fonction SAS permettant de faire cette sélection ? Si non, avez-vous une idée du codage et des fonctions à utiliser pour obtenir le résultat attendu ?

Merci d’avance.

 

Bonjour.
Il n’y a pas de fonction automatique dans SAS, à ma connaissance. On peut cependant parcourir les mots d’une chaîne de caractères avec la fonction SCAN : SCAN(chaine, n°mot). Avec une boucle, on balaie la chaîne jusqu’au dernier mot. A chacun, on récupère la 1e lettre avec un SUBSTR. On concatène ces 1ères lettres avec !! en éliminant les espaces (COMPRESS).

Voici un exemple de code :

DATA work.test ;
    INPUT variable1 & :$30. ;
DATALINES ;
Il fait beau
Toto fait ses devoirs
;
RUN ;
DATA work.test ;
    SET work.test ;
    LENGTH debutsMots $ 10 ;
    numMot = 1 ;
    debutsMots = "" ;
    DO WHILE (SCAN(variable1,numMot) NE "") ;
       debutsMots=COMPRESS(debutsMots!!SUBSTR(SCAN(variable1,numMot),1,1)) ;
       numMot = numMot + 1 ; /* mot suivant */
    END ;
RUN ;