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 08/05/2011, 03h43   #1
Invité régulier
 
Inscription : mars 2011
Messages : 45
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 45
Points : 7
Points : 7
Par défaut Changer tous les noms des variables

Bonjour,
J' ai la table suivante: T (juste une partie parce que l'originale est trop longue)
LocCde janv.-05 févr.-05 mars-05 avr.-05 .......
Loc11Cde111018 420 420 420 420
Loc21Cde111018 420 420 420 420
Loc23Cde111018 420 420 420 420
Loc31Cde111018 420 420 420 420
Loc33Cde111018 420 420 420 420
....

La proc sort m'a donné: T0 (juste une partie)


LocCde F9 F10 F11 F12 F13 .......
Loc11Cde111018 420 420 420 420 420
Loc11Cde111048 735 735 735 735 735
Loc11Cde111058 760 760 760 760 760
Loc11Cde111088 380 380 380 380 380
....
Remarquer que jan05-->oct10 est transformé en F9-->F72

la proc transpose m'a donné T1: (juste une partie)


_NAME_ _LABEL_ COL1 COL2 COL3 COL4 ...................
F9 F9 420 735 760 380 205 650 725
F10 F10 420 735 760 380 205 650 750
F11 F11 420 735 760 380 205 650 750
F12 F12 420 735 760 380 205 650 750
..............

Donc comment ferais-je pour garder la variable date en premiere colonne et garder les noms des variables chacune dans une colonne????
(Trop longue question !!!!) j'espere que vous compreniez!!!
Imfafa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/05/2011, 10h21   #2
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
C'est des points et des tirets que SAS n'aime pas. Tu peux remplacer .- par un _
(controle F, remplacer .- par _) et lire ton fichier avec SAS par la suite.
Le but étant de passer de janv.-05 par janv_05.
Tu as combien d'années au total?
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/05/2011, 15h18   #3
Invité régulier
 
Inscription : mars 2011
Messages : 45
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 45
Points : 7
Points : 7
Au total j'ai 6 années: de jan2005 à oct2010, et en ce qui concerne le format de la date: ( jan.-05 ) est en fait (01/01/2005) çàd quand on vient de chercher les (.-) on les trouve pas (format date dans excel ).

Et en plus j'ai changé le format de la date à 01/10/2005 jusqu'à 01/10/2010, mais le problème persiste.
Imfafa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/05/2011, 17h40   #4
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 posté un échantillon de ton fichier?
10 lignes suffit.
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/05/2011, 19h48   #5
Invité régulier
 
Inscription : mars 2011
Messages : 45
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 45
Points : 7
Points : 7
Voilà un échantillon!!
Fichiers attachés
Type de fichier : xls T.xls (29,0 Ko, 11 affichages)
Imfafa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/05/2011, 21h40   #6
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
à mon avis, tu n'a pas le choix que de traiter ton fichier à la mano avant de l'importer sous SAS:
1- Tu mets les colonnes au format JAN-05
2- Tu copies/colles dans un bloc note(txt)
3- Tu remplaces les "-" par "_"
4- Re copier/coller de txt vers Excel

Ci-joint le résultat des étapes ci-dessus
Fichiers attachés
Type de fichier : xls Copie de T.xls (39,0 Ko, 4 affichages)
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 01h08   #7
Invité régulier
 
Inscription : mars 2011
Messages : 45
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 45
Points : 7
Points : 7
Voilà tu l'a déjà fait !!! Il me reste que copier coller du fichier joint !!!!
Merci
Imfafa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 06h20   #8
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
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 467
Points : 2 823
Points : 2 823
Avec l'option VALIDVARNAME=ANY on évite le renommage des variables à l'import par SAS.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
OPTION VALIDVARNAME=ANY ;
PROC IMPORT DATAFILE="c:\temp\t.xls" DBMS=EXCEL OUT=work.import REPLACE ;
  SHEET="prmoinov10" ;
RUN ;
PROC TRANSPOSE DATA=work.import OUT=work.ok (RENAME=(col1=valeur)) ;
  BY LocCde NOTSORTED ;
RUN ;
OPTION VALIDVARNAME=V7 ;
DATA work.ok (DROP=_name_) ;
  /* pour s'assurer que ces colonnes arrivent en 1er dans la table */
  FORMAT locCde ;
  ATTRIB date LENGTH=4 FORMAT=DDMMYY10. ;
  SET work.ok (DROP=_label_) ;
  date = INPUT(_name_, DDMMYY8.) ;
RUN ;
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/05/2011, 12h10   #9
Invité régulier
 
Inscription : mars 2011
Messages : 45
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 45
Points : 7
Points : 7
Merci olivier.decourt c'est bien de savoir de plus.
Imfafa 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 12h50.


 
 
 
 
Partenaires

Hébergement Web