Précédent   Forum du club des développeurs et IT Pro > 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
 
Outils de la discussion
Publicité
'
Vieux 03/01/2013, 09h33   #1
delph_le
Invité de passage
 
Inscription : juin 2008
Messages : 19
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 19
Points : 3
Points : 3
Par défaut Espaces à la fin d'une chaine de caractères

Bonjour,

Je souhaite remplacer un caractère par des espaces dans une chaîne de caractères. Mais l'espace à la fin de la chaîne de caractères disparait.
Existe-t-il une solution pour faire apparaître un espace à la fin d'une chaîne de caractères ?

Dans mon exemple, la longueur de la variable var2 devrait être de 8 et non de 7.

Code :
1
2
3
4
5
6
7
8
DATA test;
var = "%%%0,00%";
run;
 
DATA test2; SET test;
var2=translate(var," ","%");
var3=length(var2);
run;
Merci de votre aide

delph_le
delph_le est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 09h57   #2
ibrahima13
Membre régulier
 
Inscription : juillet 2010
Messages : 79
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 79
Points : 82
Points : 82
Bonjour,

Dans ton exemple Translate effectue bien le remplacement du caractère "%" en vide (même pour le dernier caractère %).

Sauf que la fonction length ne compte pas les blancs en fin de chaine, Mais la longueur de la variable var2 est bien 8 et non de 7.
ibrahima13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 10h17   #3
delph_le
Invité de passage
 
Inscription : juin 2008
Messages : 19
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 19
Points : 3
Points : 3
Merci pour votre réponse.

Une autre question :
Au moment de l'export de la table en format texte, les espaces n'apparaissent plus.
Comment gérer ce problème au moment de l'export ?

Merci

delph_le
delph_le est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 10h21   #4
ibrahima13
Membre régulier
 
Inscription : juillet 2010
Messages : 79
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 79
Points : 82
Points : 82
Pour vérifier que tu effectue bien le remplacement tu peux utiliser la fonction countc pour compter le nombre de fois qu'un caractère donné apparait dans une chaine
Code :
1
2
3
4
5
6
DATA test;
var = "%%%0,00%";
var2=translate(var," ","%");
nb_pourcentage=countc(var,"%");
nb_vides=countc(var2," ");
run;
Le nombre de fois du caractère "%"(4 dans cet exemple) dans var est bien égale au nombre de vides dans var2
ibrahima13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 10h42   #5
jerome_pdv2
Membre chevronné
 
Homme
statisticien
Inscription : mai 2011
Messages : 399
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : statisticien
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : mai 2011
Messages : 399
Points : 722
Points : 722
Bonjour,


Citation:
Au moment de l'export de la table en format texte, les espaces n'apparaissent plus.
Comment gérer ce problème au moment de l'export ?

je pense que tu trouveras tout ce que tu cherches dans ce papier

http://www.nesug.org/Proceedings/nes...t/rickards.pdf

Bon courage
__________________
[...] Le SASSAGE s'il existe, a pour but de purifier les différentes semoules pour une meilleur efficacité de la mouture (par aspiration et tamisage) [...]
jerome_pdv2 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/01/2013, 10h51   #6
ibrahima13
Membre régulier
 
Inscription : juillet 2010
Messages : 79
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 79
Points : 82
Points : 82
Pour exporter ta table en fichier texte en gérant les espaces, je ferai une etape data, avec un put en spécifiant un format d'ecriture des données.
Code :
1
2
3
4
5
DATA _null_;
SET test;
file "chemin+nom_fichier.txt" dlm=";";/*optionnel*/
put var $8. var2 $8.;
run;
Le problème c'est que dans var2 tu ne verra jamais les espaces en fin de chaîne puisqu'elle n'est pas suivi d'une autre variable.

Peut etre qu'il existe d'autres solutions qui permettent de gérer cet export. (Sinon tu exporte le fichier texte sans la variable var2 et tu fais un rechercher->remplacer de % par vides).
ibrahima13 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/01/2013, 11h05   #7
ibrahima13
Membre régulier
 
Inscription : juillet 2010
Messages : 79
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 79
Points : 82
Points : 82
J'avais pas vu la réponse de jérome pdv2, regarde l'article en question, tout y es expliqué.

Bon courage.
ibrahima13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2013, 11h05   #8
delph_le
Invité de passage
 
Inscription : juin 2008
Messages : 19
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 19
Points : 3
Points : 3
Merci pour vos réponses !

J'ai appliqué l'étape DATA avec l'instruction FILE et ça marche nickel !

delph_le
delph_le est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 18h40.


 
 
 
 
Partenaires

Hébergement Web