IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Débutez Discussion :

SAS ne reconnait pas la virgule


Sujet :

Débutez

  1. #1
    Membre du Club
    Homme Profil pro
    Data analyst
    Inscrit en
    Mars 2014
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Data analyst
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 81
    Points : 65
    Points
    65
    Par défaut SAS ne reconnait pas la virgule
    Bonjour tout le monde,

    Donc voilà, j'ai préparer la base de données sur Excel ou j'ai bien traité les données nombre de décimale aprés la virgule les éspaces et tout, puis je copie et je colle sur un fichier texte.

    Mais quand j'importe cette base de données en fichier texte avec la commande suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    proc import datafile='C:\Users\Desktop\donnes petrol\electrcite.txt' 
    out=omar.energie1
    dbms=dlm replace;
    delimeter='09'x;
    datarow=2;
    run;
    la table importée me donne ça:
    Obs. annees prix demo PIB electricite
    1 1970 517 50528219 12,399 5711
    2 1971 687 51016234 13,827 9329
    3 1972 678 51485953 15,453 14591
    4 1973 902 51915873 17,749 14751
    5 1974 2,893 52320725 20,688 14710
    6 1975 2,476 52600000 23,246 18248
    7 1976 2,727 52798338 26,891 15778

    Alors à la base les données sont sous cette forme:
    annees prix demo PIB electricite
    1970 5,17 50528219 123,99 5711
    1971 6,87 51016234 138,27 9329
    1972 6,78 51485953 154,53 14591
    1973 9,02 51915873 177,49 14751
    1974 28,93 52320725 206,88 14710
    1975 24,76 52600000 232,46 18248
    1976 27,27 52798338 268,91 15778
    1977 27,26 53019005 303,15 17941
    1978 24,11 53271566 344,05 30452


    j'espére que j'etais assez clair, merci d'avance pour votre aide.

  2. #2
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Février 2011
    Messages : 1 624
    Points : 3 402
    Points
    3 402
    Par défaut
    Hello,

    DELIMITER='09'X correspond à la tabulation, toi tu dois mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    proc import datafile='C:\Users\Desktop\donnes petrol\electrcite.txt' 
    out=omar.energie1
    dbms=dlm REPLACE;
    delimeter=',';
    datarow=2;
    run;
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  3. #3
    Membre du Club
    Homme Profil pro
    Data analyst
    Inscrit en
    Mars 2014
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Data analyst
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 81
    Points : 65
    Points
    65
    Par défaut Merci pour la réponse
    Mais quand j'applique voilà ce que ça donne :
    Obs. VAR1 VAR2 VAR3
    1 1970 5 17 50528219 123 99 5711
    2 1971 6 87 51016234 138 27 9329
    3 1972 6 78 51485953 154 53 14591
    4 1973 9 02 51915873 177 49 14751
    5 1974 28 93 52320725 206 88 14710
    6 1975 24 76 52600000 232 46 18248
    7 1976 27 27 52798338 268 91 15778
    8 1977 27 26 53019005 303 15 17941
    9 1978 24 11 53271566 344 05 30452
    10 1979 51 81 53481073 392 42 39960
    11 1980 56 09 53731387 444 71 61251
    en gros mnt il mélange tout il ne fait pas les espaces entre les variables et il ne le reconnais plus.

  4. #4
    Membre actif Avatar de tdiallo
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Mai 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2012
    Messages : 118
    Points : 264
    Points
    264
    Par défaut
    bonjour,

    Le delimiter ne peut pas être la virgule. Le mieux que tu puisses faire c'est de remplacer dans ton fichier remplacer les ',' par '.' et appliquer ton premier code d'importation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    proc import datafile='C:\Users\Desktop\donnes petrol\electrcite.txt' 
    out=omar.energie1
    dbms=dlm REPLACE;
    delimeter='09'x;
    datarow=2;
    run;

  5. #5
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Points : 4 478
    Points
    4 478
    Par défaut
    BOnjour.
    Il y a donc visiblement une tabulation entre les valeurs, donc le "09"x était justifié.
    Le souci vient des virgules comme séparateur décimal. Mais la proc IMPORT ne sait pas bien gérer ce cas (ou alors il y a une option que je ne connais pas). Soit, comme propose Thierno, tu modifies le fichier d'origine, soit il faudrait plutôt écrire une étape DATA pour cet import.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DATA omar.energie1 ;
      INFILE 'C:\Users\Desktop\donnes petrol\electrcite.txt' DLM="09"x FIRSTOBS=2 MISSOVER DSD ;
      INPUT annees prix :NUMX. demo PIB electricite :NUMX. ; 
    RUN ;
    Les :NUMX. indiquent à SAS des variables avec un séparateur décimal virgule.
    Bon courage.
    Olivier

  6. #6
    Membre du Club
    Homme Profil pro
    Data analyst
    Inscrit en
    Mars 2014
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Data analyst
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 81
    Points : 65
    Points
    65
    Par défaut Merci à tous
    J'ai essayé avec ce que vous m'avez conseillé ça n'a pas marché, donc j'ai du modifier mes données sur excel manuellement puisque même quand j'essai de changer toutes les virgules en point ça ne marchais pas.ce qui est du, je pense, au fait que les fichiers excel original que j'ai téléchargé sont protégés donc quand je copie et je colle dans un autre fichier y'a une perte de données.
    et quand j'importe ça donne ça:
    Obs. annees prix demo PIB electricite
    1 1970 5.17 50528219 123.9917 5711
    2 1971 6.87 51016234 138.2737 9329
    3 1972 6.78 51485953 154.534 14591
    4 1973 9.02 51915873 177.4895 14751
    5 1974 28.93 52320725 206.8831 14710
    6 1975 24.76 52600000 232.4558 18248
    7 1976 27.27 52798338 268.9144 15778
    8 1977 27.26 53019005 303.1508 17941
    9 1978 24.11 53271566 344.045 30452
    10 1979 51.81 53481073 392.4176 39960
    11 1980 56.09 53731387 444.7061 61251
    12 1981 53.92 54028630 501.4253 105326
    donc ça a marché, juste une derniére chose, comment faire pour mettre que 2 chiffres aprés la virgule pour la variable PIB.

    Et merci.

  7. #7
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Février 2011
    Messages : 1 624
    Points : 3 402
    Points
    3 402
    Par défaut
    On modifie jamais les données source.
    il faut passer par une étape data + INFILE, l'avantage de l'étape data c'est qu'on peut mettre le format exact des données sources.
    ou sinon essayer avec l'option
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    OPTIONS CTRYDECIMALSEPARATOR=',' ;
    avant la proc impot
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  8. #8
    Membre du Club
    Homme Profil pro
    Data analyst
    Inscrit en
    Mars 2014
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Data analyst
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 81
    Points : 65
    Points
    65
    Par défaut
    ça veut dire que j'ai fait une connerie!!!

    Mais quand j'applique ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DATA omar.ddd ;
      INFILE 'C:\Users\Omar\Desktop\donnes petrol\electricity.txt' DLM="09"x FIRSTOBS=2 MISSOVER DSD ;
      INPUT annees prix :NUMX. demo PIB  electricite :NUMX. ; 
    RUN ;
    ça me donne ça:

    Obs. annees prix demo PIB electricite
    1 1970 5.17 50528219 . 5711
    2 1971 6.87 51016234 . 9329
    3 1972 6.78 51485953 . 14591
    4 1973 9.02 51915873 . 14751
    5 1974 28.93 52320725 . 14710
    6 1975 24.76 52600000 . 18248
    7 1976 27.27 52798338 . 15778
    8 1977 27.26 53019005 . 17941
    9 1978 24.11 53271566 . 30452
    10 1979 51.81 53481073 . 39960
    11 1980 56.09 53731387 . 61251
    12 1981 53.92 54028630 . 105326

    La variable PIB n’apparaît pas !!! y'a des point à la place!

  9. #9
    Membre du Club
    Homme Profil pro
    Data analyst
    Inscrit en
    Mars 2014
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Data analyst
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 81
    Points : 65
    Points
    65
    Par défaut Alléluia
    ça a marché avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DATA omar.energie ;
      INFILE 'C:\Users\Omar\Desktop\donnes petrol\electricity.txt' DLM="09"x FIRSTOBS=2 MISSOVER DSD ;
      INPUT annees prix :NUMX. demo PIB :NUMX. electricite :NUMX. ; 
    RUN ;
    c'est qu'en fait, il fallait mettre les variables dans l'ordre telles qu'elles le sont sur le fichier sous jacent, merci tout le monde.

    Vous êtres trop forts

  10. #10
    Membre actif Avatar de tdiallo
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Mai 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2012
    Messages : 118
    Points : 264
    Points
    264
    Par défaut
    Bonjour,

    Le fait que tu copies tes données pour les enregistrer ne constitue plus tes données sources, donc remplace tes virgules par des points.
    pour les deux chiffres après la virgule tu peux utiliser la fonction round dans une data: .

    Si tu ne veux pas modifier tes données sources transforme ton fichier excel en csv si tu n'as pas le module "SAS/ACCESS Interface to PC Files"

    Bon courage!!

  11. #11
    Membre du Club
    Homme Profil pro
    Data analyst
    Inscrit en
    Mars 2014
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Data analyst
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 81
    Points : 65
    Points
    65
    Par défaut
    Citation Envoyé par tdiallo Voir le message
    Bonjour,

    Le fait que tu copies tes données pour les enregistrer ne constitue plus tes données sources, donc remplace tes virgules par des points.
    pour les deux chiffres après la virgule tu peux utiliser la fonction round dans une data: .

    Si tu ne veux pas modifier tes données sources transforme ton fichier excel en csv si tu n'as pas le module "SAS/ACCESS Interface to PC Files"

    Bon courage!!
    Merci ça a marché

    Vous me sauvez la vie

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. ma page ne reconnait pas la classe dans le css
    Par Dnx dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 25/08/2005, 23h57
  2. [Debutant(e)]StreamTokenizer: ne reconnait pas les floats!!
    Par doudine dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 10/12/2004, 17h28
  3. [HARDWARE] Graveur DVD ne reconnait pas des DVD
    Par Yepazix dans le forum Périphériques
    Réponses: 2
    Dernier message: 30/11/2004, 15h22
  4. Installation : ne reconnait pas le CDROM
    Par SebCBien dans le forum Matériel
    Réponses: 4
    Dernier message: 08/08/2004, 17h10
  5. Réponses: 4
    Dernier message: 24/03/2004, 12h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo