FAQ SASConsultez toutes les FAQ
Nombre d'auteurs : 14, nombre de questions : 232, dernière mise à jour : 20 décembre 2012
- 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