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

R Discussion :

Problème d'importation de données et d'encodage de la source


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 10
    Par défaut Problème d'importation de données et d'encodage de la source
    Bonjour à tous,

    Je suis étudiant et je travaille sur l’analyse des données d’un parc éolien. Pour le moment, je ne suis qu’à l’importation des données et je rencontre déjà des problèmes.

    Vous trouverez les données en pièces-joints: fichier csv, code R et imprime écran d'un soucis d'encodage de mon fichier .R

    Lors de l’acquisition, je me rend compte que colonne « Puissance active » est reconnue comme étant faite de « character ».

    J’ai donc cherché encore et encore pourquoi R ne reconnaissait pas cette variable comme étant un « numeric ».
    A première vue je croyais à un problème de séparateur de milliers car aux alentours de la ligne 536 on remarque que espace sépare le chiffre des milliers des centaines.
    J’ai donc essayé d’utiliser la fonction « gsub » pour retirer l’espace, mais à ce moment la fonction n’a pas eu d’effets…

    En extrayant la valeur de production de la ligne 536 j’ai aussi pu constater que R ne reconnait pas l’espace et me sort le caractère suivant : �
    Par un bête copier/coller, j’ai donc aussi essayé de substituer le � par rien avec gsub et comme je m’y attendais erreur…

    Donc là je sèche et sollicite l’expérience des membres de ce forum.
    Auriez-vous une idée du problème et une solution à celui-ci ? Est-ce un problème d’encodage du fichier initial ?

    Please Help.

    En vous remerciant par avance
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés

  2. #2
    Modératrice

    Femme Profil pro
    Statisticienne, Fondatrice de la société DACTA
    Inscrit en
    Juin 2010
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Statisticienne, Fondatrice de la société DACTA

    Informations forums :
    Inscription : Juin 2010
    Messages : 893
    Par défaut
    Bonjour,

    J'ai essayé d'importer vos données également (je travaille sous Windows Vista, ça peut être utile de préciser ce genre de chose dans le cas de problèmes d'encodage).
    Je rencontre le même type de problème que vous, à savoir que la 3ème colonne "Puissance active" est reconnu comme un "factor" par R :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    > str(reg.meas.80288)
    'data.frame':   999 obs. of  5 variables:
     $ Chronotimbre..GMT.00.00.    : Factor w/ 999 levels "25.12.2010 01:30",..: 999 998 997 996 995 994 993 992 991 990 ...
     $ Statut.coube.de.puissance   : num  0 0 0 0 0 0 0 0 0 0 ...
     $ Puissance.active.10min...kW.: Factor w/ 622 levels "-0,01","-0,02",..: 1 1 40 1 1 1 1 1 1 1 ...
     $ Vit..vent.10min...m.s.      : num  1.75 1.95 2.15 1.95 1.5 1.35 1.35 1.55 1.85 1.6 ...
     $ Dir.abs.vent.10min.....     : num  160 163 169 167 127 130 127 129 138 141 ...
    J'ai donc essayé de regarder l'élément 536 comme vous le suggériez. Je n'ai pas de caractère étrange comme vous qui apparaît, mais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    > prod<-reg.meas.80288[536,3]
    > prod
    [1] 1 044,32
    622 Levels: -0,01 -0,02 -0,08 -0,10 -0,11 -0,12 -0,15 -0,17 -0,21 ... 990,36
    Le problème viendrait donc d'un espace entre le chiffre des milliers et les autres.
    J'ai ouvert le fichier de données avec openoffice calc, j'ai modifié le format de la cellule correspondant à "Puissance active" et j'ai bien fait attention de sélectionner un format sans espace entre les milliers et le reste. J'ai sauvegardé le fichier, je l'ai ré-importé dans R, et cela semble bien fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    > str(reg.meas.80288_bis)
    'data.frame':   999 obs. of  5 variables:
     $ Chronotimbre..GMT.00.00.    : Factor w/ 999 levels "25/12/10 01:30",..: 999 998 997 996 995 994 993 992 991 990 ...
     $ Statut.coube.de.puissance   : int  0 0 0 0 0 0 0 0 0 0 ...
     $ Puissance.active.10min...kW.: num  -0.01 -0.01 -0.73 -0.01 -0.01 -0.01 -0.01 -0.01 -0.01 -0.01 ...
     $ Vit..vent.10min...m.s.      : num  1.75 1.95 2.15 1.95 1.5 1.35 1.35 1.55 1.85 1.6 ...
     $ Dir.abs.vent.10min.....     : int  160 163 169 167 127 130 127 129 138 141 ...
    Voilà, dîtes-nous si cette manipulation règle le problème également chez vous.
    Bonne continuation


    Cordialement,

    A.D.


    PS: Je ne pense pas que de mettre des points dans le nom de vos variables soit un choix très judicieux, mais c'est juste un conseil

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/cours/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

  3. #3
    Membre Expert
    Avatar de pitipoisson
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2006
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 942
    Par défaut
    Bonjour,

    Même si, comme le dit A.D., il vaut mieux avoir quelque chose de propre en entrée, je te donne une (partie de) solution qui peut surtout servir dans d'autres cas.

    Le problème c'est que le formatage avec séparateur de milliers dans ton tableur utilise certainement une espace "inhabituelle" (plus fine je pense), et c'est pour ça que ton gsub ne fonctionne pas.

    En revanche, il existe dans les expressions régulières, des classes de caractères prédéfinies qui peuvent être très utiles dans de telles cas : en voici deux qui incluent le caractère en question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    prodbis <- gsub("[[:blank:]]","",prod)
    prodbis
    
    prodbis <- gsub("[[:space:]]","",prod)
    prodbis

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 10
    Par défaut
    Bonjour,

    Tout d'abord, merci pour cette réponse rapide. Je suis content de voir que mon analyse n'était pas débile

    Cependant, afin d'introduire le problème simplement, j'ai omis certains détails dans mon premier post.

    - le fichier de données que je vous ai envoyé est limité a 1000 lignes alors que mon fichier réel de travail en comporte environ 105000. Travaillant sur excel 2003 (sur windows pro v2002 sp3), il m'est impossible d'ouvrir le fichier car cette version est limitée à 65536 lignes...

    - la solution pourrait être d'installer open-office ou de faire les modifs sur mon pc perso, cependant, à terme, ce n'est pas 1, ni 2 fichiers csv que je dois traiter plus ou moins simultanément, mais plus d'une centaine voir plus si j'arrive à optimiser mon code et à avoir assez de ressources mémoire.
    A ce moment l'utilisation d'un tableur me parait exclue.

    C'est la raison pour laquelle j'aimerai savoir s'il est possible de faire la modification directement sous R.

    Après votre réponse, j'ai un peu réfléchi au problème cette nuit,et je me demande s'il ne serait pas possible:
    - d'extraire les données brutes du csv dans R
    - extraire le vecteur représentant la puissance
    - le modifier en utilisant la fonction gsub et le code unicode de l'espace
    - puis réinjecter le vecteur dans ma matrice initiale

    Je me demande aussi si la fonction read.table est la meilleure à utiliser dans ce cas et s'il ne serait pas mieux d'utiliser "scan"

    Débutant dans R, je n'ai pas assez d’expérience pour juger de la pertinence de ces pistes...

    Qu'en pensez-vous? Peut-être en avez vous une toute autre idée?

    Btw, j'ai testé votre méthode et elle ne fonctionne pas chez moi avec excel. J'ai changé le format comme vous me l'avez indiqué et rien ne se passe. J'ai donc cherché à convertir les données avec l'outil données/convertir avec différents paramètres régionaux et rien à faire... Les fichiers superieurs à 1000 ne sont pas reconnu comme des nombres.

    Y aurait t'il, un soucis d'encodage sur les fichiers bruts. J'ai l'impression que l'espace n'est pas un espace en examinant le fichier sous NotePad ++. Pour info, je les tire d'un logiciel entreprise développé en allemagne?

    Désolé pour toutes ces questions simultanées. Je mets a plat mes idées par la même occasions
    Images attachées Images attachées  

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 10
    Par défaut
    Ps: mon collègue a reussi votre manip sous open office alors que moi je n'ai pas reussi sous excel...

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 10
    Par défaut
    Merci!!! J'avais pas vu vos réponses avant de poster la mienne. Je teste ça tout de suite.

    Vraiment merci pour votre réactivité

  7. #7
    Membre Expert
    Avatar de pitipoisson
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2006
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 942
    Par défaut
    Citation Envoyé par arnaud.lucas Voir le message
    Merci!!! J'avais pas vu vos réponses avant de poster la mienne. Je teste ça tout de suite.

    Vraiment merci pour votre réactivité
    Décidément, les réponses croisées !

  8. #8
    Membre Expert
    Avatar de pitipoisson
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2006
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 942
    Par défaut
    Citation Envoyé par arnaud.lucas Voir le message
    Après votre réponse, j'ai un peu réfléchi au problème cette nuit,et je me demande s'il ne serait pas possible:
    - d'extraire les données brutes du csv dans R
    - extraire le vecteur représentant la puissance
    - le modifier en utilisant la fonction gsub et le code unicode de l'espace
    - puis réinjecter le vecteur dans ma matrice initiale
    Voir ma réponse un peu plus haut (tu devais déjà être en train de rédiger ta réponse quand j'ai posté) : pas la peine d'utiliser le code unicode.

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

Discussions similaires

  1. Problème d'import de données
    Par max12 dans le forum Services Web
    Réponses: 1
    Dernier message: 21/06/2007, 20h27
  2. Réponses: 4
    Dernier message: 11/12/2006, 11h21
  3. Problème d'importation de données
    Par Team2i dans le forum Access
    Réponses: 2
    Dernier message: 16/08/2006, 09h13
  4. [VBA-A] problème d'import de données texte
    Par David M dans le forum VBA Access
    Réponses: 2
    Dernier message: 08/05/2006, 15h45
  5. Problème à l'importation des données
    Par steinfield dans le forum Access
    Réponses: 2
    Dernier message: 24/04/2006, 16h02

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