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 20/03/2011, 12h46   #1
Invité de passage
 
Inscription : février 2011
Messages : 22
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 22
Points : 0
Points : 0
Par défaut Séparateur de millier Excel et import sous SAS

Bonjour,

Me revoilà encore une fois avec cette fois ci un petit problème qui me parait insoluble.

J'importe un fichier excel à l'aide de la proc import (Obligé pour des raisons d'automatisation).
Je suis donc amené a importer sous SAS tous mes champs en alphanumerique car je récupère le nom de la variable en 12 ieme position dans mon fichier Excel.

Cependant la plus part des variables(Dans le fichier Excel) sont numériques avec un format spécifique séparateur de millier.

Lors de l'import j'obtiens une table SAS ou toutes les variables sont alphanumériques et ou le format (séparateur de millier) est conservé.

Par exemple j'obtiens des montants de la sorte 12 354.23 en format "Character".

Mais quand je souhaite sous SAS le transformer en format numérique, impossible!!

J'ai tous essayé en utilisant les fonctions de suppression de blancs.
Il semblerait que le séparateur de millier importé n'est pas un blanc classique!!

Je ne sais pas si j'ai exposé clairement ma question.

En tous cas merci d'avance pour votre aide.
Ondine_sas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2011, 14h58   #2
Rédacteur
 
Homme Stéphane
Consultant et formateur SAS et Cognos
Inscription : avril 2009
Messages : 1 791
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Consultant et formateur SAS et Cognos
Secteur : Conseil

Informations forums :
Inscription : avril 2009
Messages : 1 791
Points : 4 012
Points : 4 012
tu dois certainement vouloir transformer ta variable sur elle même et ce n'est pas possible.
var1=input(var1,8.)

il faut un var2 = input(var1,8.) puis supprimer var1 et renommer var2 en var1.
__________________
N'oubliez pas de cliquer sur lorsque votre problème est réglé !

Moteur de recherche dans les papiers SAS
datametric est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2011, 17h09   #3
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 006
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 006
Points : 1 701
Points : 1 701
Citation:
Envoyé par datametric Voir le message
tu dois certainement vouloir transformer ta variable sur elle même et ce n'est pas possible.
var1=input(var1,8.)

il faut un var2 = input(var1,8.) puis supprimer var1 et renommer var2 en var1.
Autrement dit:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
 
DATA test;
var1="12 354.23";
run;
DATA test1(DROP=new_var);
 SET test(RENAME=(var1=new_var));
 var1=input(compress(new_var),8.2);
run;
 
proc sql;
 
DESCRIBE TABLE test;
 
DESCRIBE TABLE test1;
quit;
voir LOG pour le résultat.
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 11h25   #4
Invité de passage
 
Inscription : février 2011
Messages : 22
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 22
Points : 0
Points : 0
Bonjour,

J'ai deja testé toutes ces possibilités compress input mais rien de tout cela ne fonctionne.

Voici un fichier Excel à importer .
Vous verrez une fois importer que ce n'est finalement pas si simple.

Merci encore
Fichiers attachés
Type de fichier : xls Imp.xls (13,5 Ko, 8 affichages)
Ondine_sas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 12h51   #5
Membre Expert
 
Inscription : mars 2005
Messages : 1 010
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 010
Points : 1 258
Points : 1 258
Envoyer un message via Yahoo à bahraoui
Bonjour,

Ton fichier contient 4 lignes (ci-dessous un copier/coller de ton fichier):
Code
Pays
France
12 256,36

Est ce que c'est possible de nous envoyer votre code?

Cordialement
Salah
__________________
Consultez les FAQs et les anciens postes avant de poser vos questions. Merci
bahraoui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 13h50   #6
Invité de passage
 
Inscription : février 2011
Messages : 22
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 22
Points : 0
Points : 0
Bonjour

je n'ai pas ecrit un code propre.
J'ai testé toutes les fonctions de suppression de blanc.
Compress, cat etc...
Et des que tu veux transformer la variable en format numerique ca bloque car le separateur de millier rend la tache impossible.
Je ne sais pas si vous avez essayé de travailler sur le ficheir excel que j'ai envoyé qui correspond au copier coller dans votre message.

Cordialement
Ondine_sas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 13h55   #7
Membre Expert
 
Inscription : mars 2005
Messages : 1 010
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 010
Points : 1 258
Points : 1 258
Envoyer un message via Yahoo à bahraoui
J'ai utilisé la proc import et je n'ai pas eu de problème.
c'est bizarre, il nous faut plus d'éléments pour vous aider.
comment vous importé la table? proc import, étape data..??
possible d'avoir un extrait du fichier?
__________________
Consultez les FAQs et les anciens postes avant de poser vos questions. Merci
bahraoui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 16h27   #8
Invité de passage
 
Inscription : février 2011
Messages : 22
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 22
Points : 0
Points : 0
Re Bonjour et merci encore pour votre aide.

Voila ce que je compte faire :
Importer un fichier Excel ou csv avec des montans mais pour des contraintes techniques il faut importer ces données en format character.

Voici un code et un ficheir csv.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
DATA acc ;
INFILE "C:\Import.csv" delimiter=';' 
MISSOVER DSD lrecl=32767 firstobs=1 ;
informat var1 $12. ;
informat var2 $12. ;
format var1 $12. ;
format var2 $12.;
 
input var1 
var2;
 
;
run;
 
DATA fin;
SET acc;
mnt1=input(var1,8.);
mnt2=input(var2,8.);
 
run;
Merci
Ondine_sas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 16h31   #9
Invité de passage
 
Inscription : février 2011
Messages : 22
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 22
Points : 0
Points : 0
Dsl j'ai oublié d'inserer le fichier

En fait je n'arrive pas le charger voci un copier coller du fichier

51


121

5 497.00
150

1 313.09
9 731.00

13 673.00
41
9 231.00
3 400.00
















1 502.00
0
3 840.00
1 632.00

460





2 241.00
0
6 416.00


0
562
21 078.00
2 699.00
0


1 313.09 82 325.00
Ondine_sas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 16h32   #10
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 006
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 006
Points : 1 701
Points : 1 701
Citation:
Envoyé par Ondine_sas Voir le message
MISSOVER DSD lrecl=32767 firstobs=1 ;
firstobs??? t'es sûre ?
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 16h33   #11
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 006
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 006
Points : 1 701
Points : 1 701
Citation:
Envoyé par s_a_m Voir le message
firstobs??? t'es sûre ?
oups!!! j'ai répondu avant que tu passes ton deuxième MSG.
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 16h35   #12
Invité de passage
 
Inscription : février 2011
Messages : 22
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 22
Points : 0
Points : 0
Voici un fichier txt
Il faudra juste readapter le code pour importer ce fichier avec comme delimiteur une tabulation

Merci
Fichiers attachés
Type de fichier : txt Import.txt (99 octets, 6 affichages)
Ondine_sas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 16h43   #13
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 006
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 006
Points : 1 701
Points : 1 701
pour commencer ;as tu essayé l'option mixed=yes?

visiblement tes données sous excel sont au format mixte ( caractères et numériques).
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 16h56   #14
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
Tu peux toute fois lire ton fichier Excel avec des liens DDE, tu modifieras le programme (dossier où Excel est installlé ainsi que le chemin tu fichier à importer). Je t'ai mis en pièce jointe ton fichier au format Excel.


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
x 'cd C:\Program Files\Microsoft office\OFFICE11';
x 'excel.exe';
options noxwait noxsync;
 
filename cmd dde 'excel|system';
 
DATA _NULL_;
	x=sleep(2);
RUN;
DATA _NULL_;
	file cmd;
	put "[ERROR(false)]"; /* Pour éviter message sur MàJ */
	put '[open("C:\Documents and Settings\BEARE\Bureau\Import.xls")]'; 
run;
DATA _NULL_;
	x=sleep(2);
RUN;
 
Filename fic dde 'Excel|C:\Documents and Settings\BEARE\Bureau\[Import.xls]Feuil1!l1c1:l99c99';
 
DATA STANTERRE;
INFILE fic  firstobs=2  dsd  missover notab DLM="09"x ;
INPUT 
A	$
B	$
;
 
RUN;
DATA STANTERRE;
SET STANTERRE;
A1=input(compress(A), best.);
B1=input(compress(B), best.);
DROP A B;
RENAME A1=A B1=B;
run;
Bon courage!
Fichiers attachés
Type de fichier : xls Import.xls (13,5 Ko, 3 affichages)
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 17h28   #15
Invité de passage
 
Inscription : février 2011
Messages : 22
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 22
Points : 0
Points : 0
Merci ca marche

Désolé de vous avoir soulé toute la journée.

En fait l'ultilisation combiné dans le input de compress et du format best. etait necessaire pour la transformation de format.

Code :
A1=input(compress(var1), best.);
Merci a tous

Bonne journée
Ondine_sas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 17h47   #16
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 006
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 006
Points : 1 701
Points : 1 701
Citation:
Envoyé par MEGAMIND2 Voir le message
Tu peux toute fois lire ton fichier Excel avec des liens DDE, tu modifieras le programme (dossier où Excel est installlé ainsi que le chemin tu fichier à importer). Je t'ai mis en pièce jointe ton fichier au format Excel.


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
x 'cd C:\Program Files\Microsoft office\OFFICE11';
x 'excel.exe';
options noxwait noxsync;
 
filename cmd dde 'excel|system';
 
DATA _NULL_;
	x=sleep(2);
RUN;
DATA _NULL_;
	file cmd;
	put "[ERROR(false)]"; /* Pour éviter message sur MàJ */
	put '[open("C:\Documents and Settings\BEARE\Bureau\Import.xls")]'; 
run;
DATA _NULL_;
	x=sleep(2);
RUN;
 
Filename fic dde 'Excel|C:\Documents and Settings\BEARE\Bureau\[Import.xls]Feuil1!l1c1:l99c99';
 
DATA STANTERRE;
INFILE fic  firstobs=2  dsd  missover notab DLM="09"x ;
INPUT 
A	$
B	$
;
 
RUN;
DATA STANTERRE;
SET STANTERRE;
A1=input(compress(A), best.);
B1=input(compress(B), best.);
DROP A B;
RENAME A1=A B1=B;
run;
Bon courage!
jolie mais ton code est-il optimisé?
On ne peut pas faire sa avec une simple proc import et une étape data pour transformer les variables?
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 17h50   #17
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
Citation:
Envoyé par s_a_m Voir le message
jolie mais ton code est-il optimisé?
On ne peut pas faire sa avec une simple proc import et une étape data pour transformer les variables?
Oui bien sûr Sam, et je pense que Odine ne l'a pas utiliser mon code, juste le compress et le best. Sinon ça peut toujours aider ceux qui ne savent pas utiliser les DDE (moi y compris)
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 17h52   #18
Membre Expert
 
Homme
Biostatisticien
Inscription : juin 2009
Messages : 1 143
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Irlande

Informations professionnelles :
Activité : Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : juin 2009
Messages : 1 143
Points : 1 760
Points : 1 760
exact, ya peut être plus simple (Megamind fidèle à lui même, mais le plus important est que ca fonctionne!). Tout dépend de la forme du jeu de données (les exemples fournis n'ont pas l'air exhaustifs).
Manoutz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 17h54   #19
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
Citation:
Envoyé par Manoutz Voir le message
exact, ya peut être plus simple (Megamind fidèle à lui même, mais le plus important est que ca fonctionne!). Tout dépend de la forme du jeu de données (les exemples fournis n'ont pas l'air exhaustifs).
Pourquoi faire simple quand on peut faire plus compliqué?
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 18h02   #20
Membre Expert
 
Homme
Biostatisticien
Inscription : juin 2009
Messages : 1 143
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Irlande

Informations professionnelles :
Activité : Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : juin 2009
Messages : 1 143
Points : 1 760
Points : 1 760
... Parce que c'est plus simple! Pragmatisme et efficacité sont souvent prioritaires dans le privé, le but est de toute faire mouche. Donc autant adopter les bons automatismes(et c'est un des intérêts du forum)!
Manoutz 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 20h13.


 
 
 
 
Partenaires

Hébergement Web