Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > SAS Base
SAS Base Forum d'entraide sur SAS base : étape data, procédures non statistiques, procédures non graphiques, SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/08/2008, 09h24   #1
Candidat au titre de Membre du Club
 
Inscription : avril 2008
Messages : 18
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 18
Points : 10
Points : 10
Par défaut Nombre de caractère contenu dans une observation

Bonjour,
Y a t-il une fonction qui puisse retourner le nombre de caractères d'une observation numerique.

Example:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
DATA x;
 
y 5.;
cards;
19951
20052
1992
run;
 
DATA x;
SET x;
l=length(y);
run;
La fonction length() me retourne plutôt la taille de la variable qui est 5. Or je veux avoir 4 pour 1992 et 5 pour les deux autres

Merci pour votre aide.
b.barry est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2008, 09h34   #2
Responsable SAS
 
Inscription : septembre 2006
Messages : 1 973
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 1 973
Points : 4 810
Points : 4 810
Bonjour,
Tu as déjà beaucoup de fautes dans ton étape data!!
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
DATA x;
INPUT Y$;
cards;
19951
20052
1992
;
run;
 
DATA x;
SET x;
l=length(y);
run;
Ce code te retourne la solution voulue.
__________________
Les balises code
FAQ SAS
Rubrique SAS

Si vous souhaitez contribuer à la rubrique SAS, contactez-moi ou tout autre membre de l'équipe BI par MP.
fafabzh6 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2008, 09h49   #3
Candidat au titre de Membre du Club
 
Inscription : avril 2008
Messages : 18
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 18
Points : 10
Points : 10
Citation:
Envoyé par fafabzh6 Voir le message
Bonjour,
Tu as déjà beaucoup de fautes dans ton étape data!!
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
DATA x;
INPUT Y$;
cards;
19951
20052
1992
;
run;
 
DATA x;
SET x;
l=length(y);
run;
Ce code te retourne la solution voulue.
Merci beaucoup et tu as raison pour les fautes mais en fait j'ai dejà les données dans mon system. Je n'ai donc pas bésoin de les y introduire. Sinon, quand je procède comme tu as indiqué avec les données ci-dessus, j'obtiens effectivement le bon resultat. Seulement, ca ne marche pas avec ma variable qui est de type numerique. Là j'obtiens un resultat uniforme pour toutes les observations. Et si je la transforme en caractère, ca ne change aussi rien, toujours le même resultat uniforme
b.barry est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2008, 09h55   #4
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 482
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 482
Points : 2 866
Points : 2 866
Si ta variable de base est numérique, je te conseille la formule suivante :
LENGTH(PUT(Y, BEST32. -L))
Tes valeurs sont actuellement constantes parce que SAS compte les blancs à gauche ajoutés lors de la conversion. D'où l'ajout du -L (aligne à gauche) dans le PUT.
Olivier
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2008, 10h01   #5
Candidat au titre de Membre du Club
 
Inscription : avril 2008
Messages : 18
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 18
Points : 10
Points : 10
Citation:
Envoyé par olivier.decourt Voir le message
Si ta variable de base est numérique, je te conseille la formule suivante :
LENGTH(PUT(Y, BEST32. -L))
Tes valeurs sont actuellement constantes parce que SAS compte les blancs à gauche ajoutés lors de la conversion. D'où l'ajout du -L (aligne à gauche) dans le PUT.
Olivier
Merci Ca marche
b.barry est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h49.


 
 
 
 
Partenaires

Hébergement Web