
FAQ SASConsultez toutes les FAQ
Nombre d'auteurs : 14, nombre de questions : 232, dernière mise à jour : 20 décembre 2012
Sommaire→SAS BASE→Caractères- Comment convertir une variable de type caractère en variable de type numérique ?
- Comment concaténer deux chaînes de caractères ?
- Comment supprimer les blancs d'une chaîne de caractères ?
- Comment mettre en majuscules une chaîne de caractères ?
- Comment mettre en minuscules une chaîne de caractères ?
- Comment extraire une partie de chaîne de caractères ?
- Comment stocker une variable en la forçant avec des zéros devant ?
- En SAS9, comment extraire la position d'un mot d'une chaîne de caractères sans être sensible à la casse ?
- Dans une chaîne de caractères, comment mettre la première lettre de chaque mot en majuscule et les autres lettres en minuscule ?
À l'aide de la fonction "input" vous pouvez convertir une variable de type caractère en variable numérique.
DATA base;
INPUT var1$ var2;
CARDS;
10 5
3 8
;
DATA base2;
SET base;
var3=input(var1,3.);
RUN;
La fonction !! permet ce genre de manipulation comme vous le montre l'exemple suivant :
DATA base;
INPUT var1$ var2$;
cards ;
Hello world
;
DATA base2;
SET base;
var3=var1!!var2;
RUN;La fonction "compress" permet ce genre de manipulation :
DATA base;
INPUT var1$ var2$;
cards ;
Hello world
;
RUN;
DATA base2;
SET base;
var3=var1!!var2;
RUN;
DATA base3;
SET base2;
var4=compress(var3);
RUN;La fonction "upcase" permet cette manipulation comme vous pouvez le voir dans l'exemple suivant :
DATA base;
INPUT var1$ var2$;
cards ;
Hello world
;
RUN;
DATA base2;
SET base;
var3=var1!!var2;
RUN;
DATA base3;
SET base2;
var4=UPCASE(var3);
RUN;La fonction "lowcase" permet la mise en minuscules d'une chaîne de caractères.
DATA base;
INPUT var1$;
cards ;
HEllO
;
RUN;
DATA base2;
SET base;
var2=LOWCASE(var1);
RUN;La fonction "substr" permet l'extraction d'une partie d'une chaîne de caractères, ces paramètres sont les suivants : substr(maChaine,debutExtraction,longueurExtraction).
DATA base;
INPUT var1$;
cards ;
HEllO
;
RUN;
DATA base2;
SET base;
var2=SUBSTR(var1,2,3);
RUN;Par exemple disposant de valeur '123456' censée être stockée sur 9 caractères on désire avoir '000123456'.
Pour résoudre ce problème, on peut utiliser le format ZX., où X désigne le nombre total de chiffres avec les zéros.
DATA t;
i=123456;
format i_bis Z10.;
i_bis=i;
run;Vous devez utiliser la fonction FIND avec l'option « i ».
La fonction FIND cherche la première occurrence du mot spécifié en paramètre et retourne sa position. L'exemple ci-dessous compare les résultats obtenus avec la fonction FIND et la fonction INDEX (présente depuis la V8). La fonction index étant elle sensible à la casse.
Exemple :
data _null_;
/* cherche le mot trouve, insensible à la casse */
A=find('où se trouve le mot recherché','TROUVE','i');
put A=; /* écrit la valeur de A */
/* cherche le mot trouve en majuscule uniquement */
B=index('où se trouve le mot recherché','TROUVE');
put B=; /* écrit la valeur de B */
run;Résultats :
A=7
B=0
Il faut utiliser la fonction PROPCASE.
Exemple :
Data Faq ;
X= 'ALLO SUPPORT';
Y=propcase(X);
Put X= Y= ;
Run;Résultat :
- X=ALLO SUPPORT
- Y=ALLO SUPPORT
Documentation : Using the PROPCASE function



