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 :

1ère colonne traitée comme numéro de ligne après read.csv


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Post-doctorant
    Inscrit en
    Novembre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Post-doctorant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 2
    Par défaut 1ère colonne traitée comme numéro de ligne après read.csv
    Bonjour à tous,

    Je souhaite importer un fichier csv mais j'ai un petit problème de décalage de la première colonne que R transforme en numéro de lignes.

    Le fichier csv contient des en-têtes (la première ligne), et ensuite 52 colonnes, dont la première est une colonne "Date" au format yyyymmddHHMMSS. La décimale est le "." et le séparateur de colonne la ",". Voici la structure du fichier (3 premières lignes).


    Date, Pa_1_1_1, P_rain_1_1_1, raw_P_rain_1_1_1, PPFD_1_1_1, WD_1_1_1, WS_1_1_1, WS_qf_1_1_1, RH_1_1_1, Ta_1_1_1, Ts_1_1_1, Ts_1_1_2, Ts_1_2_1, Ts_1_2_2, Ts_1_3_1, Ts_1_3_2, Ts_1_4_1, Ts_1_5_1, SWC_1_1_1, EC_1_1_1, Tswc_1_1_1, Pe_1_1_1, Pr_1_1_1, VR_1_1_1, SWC_1_1_2, EC_1_1_2, Tswc_1_1_2, Pe_1_1_2, Pr_1_1_2, VR_1_1_2, SWC_1_2_1, EC_1_2_1, Tswc_1_2_1, Pe_1_2_1, Pr_1_2_1, VR_1_2_1, SWC_1_3_1, EC_1_3_1, Tswc_1_3_1, Pe_1_3_1, Pr_1_3_1, VR_1_3_1, G_1_1_1, V_G_1_1_1, Esen_1_1_1, G_qf_1_1_1, G_1_1_2, V_G_1_1_2, Esen_1_1_2, G_qf_1_1_2, GWL_1_1_1, Tgwl_1_1_1

    20180604000000,995.0562,0,0,0,23,0.39,0,99.44307,14.92076,15.83539,16.98187,16.47504,17.02008,17.09021,16.90555,15.87903,13.1637,0.4003,0.0344,17.2221,24.9855,3.5615,1.1002,9999999,0.0729,17.7287,69.1716,5.1631,1.2181,9999999,0.0771,16.5668,76.9864,5.3801,1.2248,9999999,0.0588,14.8527,64.6144,5.032,1.1709,-3.714366,-172.4669,46.4324,0,-1.899393,-99.50014,52.38524,0,37.29701,12.59138,
    J'utilise la fonction sous la forme suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    data <- read.csv(file="FR_LGT_001_18_156_0000N6.csv")
    .

    Le problème c'est que R attribue ma colonne Date en tant que numéro de lignes, et du coup toutes mes en-têtes sont décalées. Il me crée en plus une dernière colonne avec que des NA (normal puisque les dates ont été utilisées autrement).
    Comme mon explication n'est peut-être pas très claire, voici une image du résultat:

    Nom : R.png
Affichages : 2165
Taille : 29,6 Ko

    Si je met header=False, je n'ai pas ce décalage dans les colonnes, mais par contre je n'ai plus les en-têtes.

    L'un d'entre vous aurait-il une idée d'où provient ce problème et comment y remédier s'il vous plaît ?

    Merci d'avance,
    Noxi90

  2. #2
    Membre expérimenté Avatar de Alpacky
    Homme Profil pro
    .
    Inscrit en
    Mars 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Mars 2014
    Messages : 99
    Par défaut
    bonjour,

    Il me semble qu'il n'y a que deux lignes dans votre aperçu mais je peux me tromper. L'erreur vient probablement du fait que votre deuxième ligne se termine par une ",". R attend donc une autre colonne, ce qui crée certainement le décalage.

    Plusieurs options sont disponibles : décaler les header manuellement mais il faut être certain que tout corresponde bien, lire juste les header et lire sans header et faire correspondre après sinon utiliser la fonction read_csv du package readr ou nettoyer le csv avant de le lire.

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Post-doctorant
    Inscrit en
    Novembre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Post-doctorant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 2
    Par défaut
    Bonjour,

    Merci pour votre réponse. L'aperçu que j'ai posté est tronqué car trop long pour l'affichage ici. J'ai mis trois lignes: la ligne d'en-têtes, une ligne blanche en dessous, et ensuite une première ligne de données.

    Nettoyer le csv n'est pas possible: c'est un fichier journalier transmis par une station de mesure autonome. Chaque fichier possède 1441 lignes, et chaque nouveau jour un nouveau fichier arrive. Mon idée est de créer un petit code R pour réaliser quelques opérations de routine sur ces fichiers.

    Je vais tenter les deux autres opérations que vous m'avez décrite pour voir si cela fonctionne.

    Noxi90

  4. #4
    Membre émérite
    Homme Profil pro
    Chercheur
    Inscrit en
    Décembre 2015
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 327
    Par défaut
    Par défaut, dans read.csv la virgule est le séparateur de colonne. Si une ligne se termine par une virgule, R considère qu'il y a alors une colonne vide supplémentaire (codée NA dans R) qui termine la ligne. C'est le cas de la deuxième ligne de ton exemple.

    La première ligne du fichier est une ligne qui donne les entêtes du fichier. read.csv et read.table considèrent par défaut que s'il y a une colonne de plus dans la partie des données que dans la ligne d'entête, alors, la première colonne des données est celle qui contient les noms des lignes. C'est ce qui doit t'arriver (je n'ai pas le courage de compter les items dans ton exemple). Si c'est le cas et que tu ne peux pas modifier ton fichier, alors donne à l'argument row.names le numéro de la colonne en trop, c'est-à-dire que si tu as N variables/colonnes, alors row.names=N+1. Cela devrait résoudre ton problème.

Discussions similaires

  1. [XL-2007] Utiliser la valeur d'une cellule comme numéro de ligne
    Par DiesIrae dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/08/2009, 14h04
  2. [MySQL] Apparition de saut de lignes après import CSV
    Par aiss57 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 02/06/2009, 19h42
  3. Supprimer les numéros de lignes et colonnes
    Par arkorrigan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/06/2008, 10h16
  4. Réponses: 5
    Dernier message: 06/05/2008, 12h33
  5. Réponses: 4
    Dernier message: 21/02/2008, 22h35

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