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 15/11/2011, 10h03   #1
Invité régulier
 
Inscription : juin 2011
Messages : 36
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 36
Points : 8
Points : 8
Par défaut Comment limiter à un seul espace entre chaque mot ?

Bonjour,

Je souhaiterai manipuler des chaînes de caractères qui contiennent parfois plusieurs espaces entre chaque mot. Exemple :

Code :
1
2
3
4
5
6
7
8
9
10
11
DATA test1;
	input lib $50.;
	cards;
		avec          10-10          espaces
		avec     5-2  espaces
		avec  2-1 espaces
		avec  2-0espaces
		avec 1-0espace
		avec0espace
		;
run;
Il faudrait que j'arrive à une table où, à chaque fois qu'il y a plus d'un espace, il n'en garde qu'un seul entre chaque mot.

Après avoir cherché sur le forum diverses solutions j'ai repéré quelques codes intéressants mais, ne les maîtrisant pas bien, je n'arrive pas à en faire ce que je veux :

1) Ci-dessous j'essaie d'identifier les chaînes de caractères ayant plus de deux caractères "espace" consécutifs. Mais comme il m'identifie toutes mes lignes je suppose que j'ai une erreur quelque part...

Code :
1
2
3
data test2 (where=( prxmatch("/\s{2,}/", lib) ));
	set test1;
run;
2) Ci-dessous j'essaie d'identifier les chaînes de caractères ayant exactement deux espaces consécutifs (mais comme je ne sais pas comment identifier le caractère "espace" avec le like ça ne marche pas )

Code :
1
2
3
data test3 (where=( lib like '%XX%'));
	set test1;
run;
Pour ces deux codes j'imagine que je ne suis pas très loin d'arriver à ce que je veux mais il me manque néanmoins quelques détails

Si quelqu'un peut m'aider sur ces problèmes (qui m'empêche déjà d'identifier les enregistrements à modifier) je me penche après sur l'histoire du remplacement des espaces multiples par un espace simple
Areis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2011, 10h16   #2
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 012
Détails du profil
Informations personnelles :
Nom : Homme Samir SELMANE
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : février 2011
Messages : 1 012
Points : 1 713
Points : 1 713
hello;

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
 
DATA test1;
	input lib $50.;
	cards;
		avec          10-10          espaces
		avec     5-2  espaces
		avec  2-1 espaces
		avec  2-0espaces
		avec 1-0espace
		avec0espace
		;
run; 
 
 
DATA test2;
SET test1;
var1= compbl (lib);
run;
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 15/11/2011, 10h22   #3
Invité régulier
 
Inscription : juin 2011
Messages : 36
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 36
Points : 8
Points : 8
Eh ben génial
Merci Sam
Areis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2011, 10h59   #4
Membre Expert
 
Homme
Biostatisticien
Inscription : juin 2009
Messages : 1 149
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Irlande

Informations professionnelles :
Activité : Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : juin 2009
Messages : 1 149
Points : 1 768
Points : 1 768
Il y a egalement la fonction strip(). A partir de la version 9.
Manoutz est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2011, 11h22   #5
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 012
Détails du profil
Informations personnelles :
Nom : Homme Samir SELMANE
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : février 2011
Messages : 1 012
Points : 1 713
Points : 1 713
Manoutz, je crois que strip = trimn + left !!!
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2011, 13h22   #6
Membre Expert
 
Homme
Biostatisticien
Inscription : juin 2009
Messages : 1 149
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Irlande

Informations professionnelles :
Activité : Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : juin 2009
Messages : 1 149
Points : 1 768
Points : 1 768
oups. la fonction strip est pas aussi puissante que je pensais. Merci sam
Manoutz est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2011, 13h29   #7
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 012
Détails du profil
Informations personnelles :
Nom : Homme Samir SELMANE
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : février 2011
Messages : 1 012
Points : 1 713
Points : 1 713
No problemo
s_a_m 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 13h16.


 
 
 
 
Partenaires

Hébergement Web