Avertissement “Ligne finale incomplète” lors de la tentative de lecture d’un fichier .csv dans R

J’essaie de lire un fichier .csv dans R et en utilisant cette formule:

pheasant<-read.table(file.choose(),header=TRUE,sep=",") 

Je reçois ce message d’avertissement:

 "incomplete final line found by readTableHeader on 'C:\Documents and Settings..." 

Il y a une ou deux choses que je pensais avoir provoquées cet avertissement, mais malheureusement je ne connais pas assez R pour diagnostiquer le problème moi-même, alors j’ai pensé poster ici dans l’espoir que quelqu’un d’autre puisse le diagnostiquer pour moi!

  • le fichier .csv était à l’origine un fichier Excel que j’ai enregistré au format .csv
  • le fichier comprend trois colonnes de données
  • chaque colonne de données a une longueur différente, c.-à-d. qu’il y a un nombre différent de valeurs dans chaque colonne
  • Je veux comparer les moyennes (en utilisant t-test ou équivalent dépendant de la dissortingbution normale / non normale) de deux des colonnes à la fois, donc, par exemple, t-test entre les valeurs de la colonne 1 et celles de la colonne 2, test des valeurs des colonnes 1 et 3, etc.

Toute aide ou suggestion serait sérieusement appréciée!

    Le message indique que la dernière ligne du fichier ne se termine pas par un caractère de fin de ligne (EOL) (saut de ligne ( \n ) ou retour chariot + saut de ligne ( \r\n )). L’intention initiale de ce message était de vous avertir que le fichier peut être incomplet; La plupart des fichiers de données ont un caractère EOL comme dernier caractère du fichier.

    Le remède est simple:

    1. Ouvrez le fichier
    2. Naviguez jusqu’à la dernière ligne du fichier
    3. Placez le curseur à la fin de cette ligne
    4. Retour presse
    5. Enregistrez le fichier

    Êtes-vous vraiment sûr d’avoir sélectionné le fichier .csv et non le fichier .xls? Je ne peux reproduire l’erreur que si j’essaie de lire un fichier .xls. Si j’essaie de lire un fichier .csv ou tout autre fichier texte, il est impossible de recréer l’erreur que vous obtenez.

     > Data <- read.table("test.csv",header=T,sep=",") > Data <- read.table("test.xlsx",header=T,sep=",") Warning message: In read.table("test.xlsx", header = T, sep = ",") : incomplete final line found by readTableHeader on 'test.xlsx' 

    readTableHead est la fonction c qui donne l'erreur. Il essaie de lire les n premières lignes (standard les 5 premières) pour déterminer le type de données. Le rest des données est lu à l'aide de scan() . Le problème est donc le format du fichier.

    Une façon de le savoir consiste à définir le répertoire de travail dans le répertoire où se trouve le fichier. De cette façon, vous voyez l’extension du fichier que vous lisez. Je sais que sous Windows, ce n’est pas standard, donc vous pouvez penser que csv n’est pas.

    La prochaine chose à faire est d'ouvrir le fichier dans Notepad ou Wordpad (ou un autre éditeur) et de vérifier que le format est équivalent à mon fichier test.csv :

     Test1,Test2,Test3 1,1,1 2,2,2 3,3,3 4,4, 5,5, ,6, 

    Ce fichier vous donnera le dataframe suivant:

     > read.table(testfile,header=T,sep=",") Test1 Test2 Test3 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 NA 5 5 5 NA 6 NA 6 NA 

    Le format csv enregistré par Excel sépare toutes les cellules par une virgule. Les cellules vides n'ont tout simplement pas de valeur. read.table() peut facilement traiter ce problème et reconnaît les cellules vides.

    Le problème est facile à résoudre. c’est parce que la dernière ligne DOIT être vide.

    Dites si votre contenu est

     line 1, line2 

    changer pour

     line 1, line2 (empty line here) 

    Aujourd’hui, j’ai rencontré ce genre de problème, lorsque j’essayais d’utiliser R pour lire un fichier JSON, en utilisant la commande “json_data <-fromJSON (paste (readLines (" json01.json "), collapse =" ")"; et je le résout par ma méthode ci-dessus.

    J’ai réalisé que plusieurs réponses ont été fournies mais pas encore de correctif.

    La raison, comme mentionné ci-dessus, est une “fin de ligne” manquante à la fin du fichier CSV.

    Alors que le vrai correctif devrait provenir de Microsoft, la solution consiste à ouvrir le fichier CSV avec un éditeur de texte et à append une ligne à la fin du fichier (alias appuyer sur la touche retour). J’utilise le logiciel ATOM comme éditeur de texte / code, mais pratiquement tous les éditeurs de texte de base le feraient.

    En attendant, veuillez signaler le bogue à Microsoft.

    Question: Il me semble que c’est un problème de bureau 2016. Quelqu’un at-il le problème sur un PC?

    J’ai reçu le même message. Mon correctif inclus: J’ai supprimé toutes les feuilles supplémentaires (tabs) dans le fichier .csv, éliminé les caractères non numériques, réenregistré le fichier en tant que virgule et chargé dans R v 2.15.0 en langage standard:

    filename <-read.csv ("filename", en-tête = TRUE)

    Comme garantie supplémentaire, j’ai fermé le logiciel et rouvert avant de charger le csv.

    Dans divers environnements européens, le caractère virgule servant de point décimal, la fonction read.csv2 doit être utilisée à la place.

    J’ai résolu ce problème en changeant le codage dans l’argument read.table de fileEncoding = “UTF-16” à fileEncoding = “UTF-8”.

    J’ai eu ce problème une fois lorsque j’avais un seul devis dans l’en-tête. Lorsque je l’ai enlevé (c.-à-d. Renommé l’en-tête de colonne respectif Jimmy's data de Jimmy's data Jimmys data ), la fonction n’a renvoyé aucun avertissement.

    Le problème que vous décrivez s’est produit pour moi lorsque j’ai renommé un .csv .xlsx en .csv .

    Ce qui a été corrigé pour moi, c’était de “Enregistrer sous” puis de le sauvegarder à nouveau sous le nom de .csv .

    Ouvrez le fichier dans text wrangler ou notepad ++ et affichez le formatage, par exemple dans text wrangler, vous montrez des invisibles. De cette façon, vous pouvez voir les nouveaux caractères de la ligne ou des tabs. Souvent, Excel va append toutes sortes d’tabs aux mauvais endroits et non pas un dernier caractère de nouvelle ligne, mais vous devez montrer les symboles pour voir cela.

    Mon travail consistait à ouvrir le fichier csv dans un éditeur de texte, à supprimer les virgules excessives sur la dernière valeur, puis à enregistrer le fichier. Par exemple pour le fichier suivant

     Test1,Test2,Test3 1,1,1 2,2,2 3,3,3 4,4, 5,5, ,6,, 

    Supprimez les virgules après 6, puis enregistrez le fichier.

    J’ai rencontré un problème similaire, mais cela apparaît comme un avertissement générique et peut ne pas être lié au caractère de fin de ligne. Dans mon cas, il s’agissait de donner cette erreur car le fichier que j’utilisais contenait des caractères cyrilliques, une fois que je les ai remplacés par des caractères latins, l’erreur a disparu.

    Utilisez readLines() (avec warn = FALSE ) pour lire le fichier d’abord dans un vecteur de caractères.

    Après cela, utilisez l’option text = pour lire le vecteur dans un read.table() données avec read.table()

      pheasant <- read.table( text = readLines(file.choose(), warn = FALSE), header = TRUE, sep = "," ) 

    Pour résoudre ce problème via R lui-même, j’ai simplement utilisé read.xlsx(..) au lieu de read.csv() . Fonctionne comme un charme !! Vous n’avez même pas à renommer. Renommer un fichier xlsx en CSV n’est pas une solution viable.

    J’ai essayé différentes solutions, telles que l’utilisation d’un éditeur de texte pour insérer une nouvelle ligne et obtenir le caractère de fin de ligne recommandé dans la réponse supérieure ci-dessus. Aucun de ceux-ci n’a fonctionné, malheureusement.

    La solution qui a finalement fonctionné pour moi était très simple: j’ai copié-collé le contenu d’un fichier CSV dans un nouveau fichier CSV vierge, l’ai enregistré et le problème a disparu.