99 votes

Importation de fichiers Excel dans R, xlsx ou xls

Quelqu'un peut-il m'aider à trouver la meilleure façon d'importer un fichier Excel 2007 (.xlsx) dans R. J'ai essayé plusieurs méthodes mais aucune ne semble fonctionner. J'ai effectué la mise à jour vers la version 2.13.1, Windows XP, xlsx 0.3.0, je ne sais pas pourquoi l'erreur continue de s'afficher. J'ai essayé :

AB<-read.xlsx("C:/AB_DNA_Tag_Numbers.xlsx","DNA_Tag_Numbers")

OU

AB<-read.xlsx("C:/AB_DNA_Tag_Numbers.xlsx",1)

mais je reçois l'erreur :

 Error in .jnew("java/io/FileInputStream", file) : 
  java.io.FileNotFoundException: C:\AB_DNA_Tag_Numbers.xlsx (The system cannot find the file specified)

Gracias.

4 votes

Combien de fois faites-vous cela ? Si vous ne le faites qu'une seule fois, il est presque toujours préférable d'utiliser Excel pour exporter vers un format plus ouvert, par exemple .csv .

0 votes

Gsk3 : Oui, ou Google Docs, qui prend en charge l'importation d'Excel 2007 depuis 2009 : google.com/support/forum/p/Google%20Docs/ (J'espère qu'à présent cela fonctionne bien).

6 votes

Quelle est cette version de R ? Quel système d'exploitation ? Quelle version de read.xlsx ? Avez-vous lu le guide d'affichage ? </ripleybot>

35voto

Ian Fellows Points 8013

Vous pouvez également essayer le paquet XLConnect. J'ai eu plus de chance avec lui qu'avec xlsx (et il peut aussi lire les fichiers .xls).

library(XLConnect)
theData <- readWorksheet(loadWorkbook("C:/AB_DNA_Tag_Numbers.xlsx"),sheet=1)

Par ailleurs, si vous avez des difficultés à trouver votre fichier, essayez de le sélectionner avec file.choose().

7 votes

Plutôt que de readWorksheet(loadWorkbook(...)) vous pouvez faire la même chose de manière un peu plus succincte avec readWorksheetFromFile(...) .

0 votes

Cela a fonctionné sur une de mes feuilles problématiques sur laquelle read.xlsx s'est planté avec "java.lang.IllegalArgumentException : L'index de la cellule doit être >= 0".

23voto

Ben Bolker Points 50041

Je voudrais vraiment essayer le read.xls dans le gdata qui est considérablement plus mature que le paquet xlsx paquet. Il peut nécessiter Perl ...

21voto

Gavin Simpson Points 72349

Mise à jour

Comme la réponse ci-dessous est maintenant quelque peu dépassée, je voudrais juste attirer l'attention sur la readxl paquet. Si la feuille Excel est bien formatée/expliquée, j'utiliserais maintenant la méthode suivante readxl pour lire le cahier d'exercices. Si les feuilles sont mal formatées ou mal expliquées, je continuerais à exporter vers le format CSV et à traiter les problèmes dans R, soit par le biais de read.csv() ou tout simplement readLines() .

Original

Ma méthode préférée est d'enregistrer les feuilles Excel individuelles dans des fichiers CSV (comma separated value). Sous Windows, ces fichiers sont associés à Excel, de sorte que vous ne perdez pas la "fonctionnalité" d'ouverture par double-clic dans Excel.

Les fichiers CSV peuvent être lus dans R en utilisant read.csv() ou, si vous vous trouvez dans un endroit ou si vous utilisez un ordinateur configuré avec des paramètres européens (où l'option , est utilisé comme décimale), en utilisant la fonction read.csv2() .

Ces fonctions ont des valeurs par défaut judicieuses qui facilitent la lecture de fichiers correctement formatés. Gardez simplement les étiquettes des échantillons ou des variables dans la première ligne ou colonne.

Les avantages supplémentaires du stockage des fichiers en CSV sont les suivants : comme les fichiers sont en texte brut, ils peuvent être transmis très facilement et vous pouvez être sûr qu'ils s'ouvriront n'importe où ; il n'est pas nécessaire d'utiliser Excel pour consulter ou modifier les données.

6 votes

Le csv ne serait d'aucune utilité puisque le classeur contient plusieurs feuilles de calcul et que chacune d'entre elles compte jusqu'à 100 000 lignes. Merci

7 votes

J'ai bien dit de sauvegarder les feuilles individuelles en tant que fichiers CSV - comme il s'agit de texte brut, la taille des feuilles de calcul n'est pas pertinente. Si vous insistez pour travailler avec des classeurs Excel, les options disponibles pour lire les données dans R deviennent beaucoup plus complexes - voir les packages RODBC, RDCOM pour les alternatives. Enfin, si vous êtes certain d'avoir suivi les instructions pour l'utilisation de read.xlsx() y disposez des dernières versions de ce paquet et de R, puis envoyez un courriel au mainteneur du paquet pour signaler un bogue potentiel.

0 votes

Cela dépend vraiment des données et du niveau d'interopérabilité que vous exigez entre les systèmes d'exploitation. Dès qu'il y a du non-ascii dans vos étiquettes ou facteurs ET que vous avez besoin de travailler sur Mac/Win/Lin, des bizarreries diverses vont commencer à se produire si vous exportez/importez vers et depuis Excel. Excel ne peut pas gérer l'utf-8 de manière élégante (ni le csv d'ailleurs). Dans ce cas, soit vous restez dans Excel, soit vous passez à un autre tableur (ce qui n'est pas toujours possible).

20voto

marvin_dpr Points 625

Exemple 2012 :

library("xlsx")
FirstTable <- read.xlsx("MyExcelFile.xlsx", 1 , stringsAsFactors=F)
SecondTable <- read.xlsx("MyExcelFile.xlsx", 2 , stringsAsFactors=F)
  • J'essaierais le paquet 'xlsx' car il est facile à manipuler et semble assez mature.
  • a bien fonctionné pour moi et n'a pas eu besoin d'ajouts comme Perl ou autre.

Exemple 2015 :

library("readxl")
FirstTable  <- read_excel("MyExcelFile.xlsx", 1)
SecondTable <- read_excel("MyExcelFile.xlsx", 2)
  • Aujourd'hui, j'utilise readxl et ont fait une bonne expérience avec elle.
  • pas besoin de matériel supplémentaire
  • bonne performance

14voto

RockScience Points 2341

Ce nouveau paquet a l'air bien http://cran.r-project.org/web/packages/openxlsx/openxlsx.pdf Il ne nécessite pas rJava et utilise 'Rcpp' pour la vitesse.

0 votes

Et il est en cours de développement actif

1 votes

Je travaille avec des classeurs Excel assez volumineux, et openxlxs est à peu près le seul à pouvoir gérer de tels fichiers.

0 votes

Malheureusement, cela nécessite "rtools"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X