web-dev-qa-db-fra.com

Importation de fichiers Excel dans R, xlsx ou xls

S'il vous plaît, quelqu'un peut-il m'aider à choisir le meilleur moyen d'importer un fichier Excel 2007 (.xlsx) dans R. J'ai essayé plusieurs méthodes et aucune ne semble fonctionner. J'ai mis à niveau vers la version 2.13.1, Windows XP, xlsx 0.3.0, je ne sais pas pourquoi l'erreur persiste. J'ai essayé:

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

OR

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

mais j'obtiens 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)

Je vous remercie.

83
nolyugo

Pour une solution dépourvue de dépendances externes * complexes, il existe maintenant readxl :

Le package readxl facilite l'extraction de données dans Excel et R. Les comparés à de nombreux packages existants (par exemple, gdata, xlsx, xlsReadWrite), readxl n'a pas de dépendances externes et est donc facile à installer et à utiliser sur tous les systèmes d'exploitation. Il est conçu pour fonctionner avec des données tabulaires stockées dans une seule feuille.

Readxl prend en charge le format hérité .xls et le format .xlsx moderne basé sur xml. La prise en charge .xls est rendue possible grâce à la bibliothèque C libxls, qui élimine bon nombre des complexités du format binaire sous-jacent. Pour analyser .xlsx, nous utilisons la bibliothèque RapidXML C++.

Il peut être installé comme suit:

install.packages("readxl") # CRAN version

ou

devtools::install_github("hadley/readxl") # development version

Usage

library(readxl)

# read_Excel reads both xls and xlsx files
read_Excel("my-old-spreadsheet.xls")
read_Excel("my-new-spreadsheet.xlsx")

# Specify sheet with a number or name
read_Excel("my-spreadsheet.xls", sheet = "data")
read_Excel("my-spreadsheet.xls", sheet = 2)

# If NAs are represented by something other than blank cells,
# set the na argument
read_Excel("my-spreadsheet.xls", na = "NA")

* pas tout à fait vrai, il nécessite le Rcpp package , qui à son tour nécessite Rtools (pour Windows) ou Xcode (pour OSX), qui sont des dépendances externes à R. Mais ils ne nécessitent aucune manipulation. chemins, etc., donc c'est un avantage par rapport à Java et aux dépendances Perl.

Update Il existe maintenant le package rexcel . Cela promet d’obtenir le formatage Excel, les fonctions et de nombreux autres types d’informations à partir du fichier Excel et dans R.

94
Ben

Vous voudrez peut-être aussi essayer le package XLConnect. J'ai eu plus de chance avec cela que xlsx (en plus, il peut aussi lire les fichiers .xls).

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

de plus, si vous rencontrez des problèmes avec votre fichier introuvable, essayez de le sélectionner avec file.choose ().

35
Ian Fellows

Je voudrais certainement essayer la fonction read.xls dans le package gdata, qui est considérablement plus mature que le package xlsx. Cela peut nécessiter Perl ...

22
Ben Bolker

Mise à jour

La réponse ci-dessous étant maintenant quelque peu dépassée, je voudrais simplement attirer l’attention sur le paquet readxl. Si la feuille de calcul Excel est bien formatée, je voudrais maintenant utiliser readxl pour lire à partir du classeur. Si les feuilles sont mal formatées/restituées, j’exporterais quand même au format CSV, puis réglerais les problèmes liés à R via read.csv() ou tout simplement readLines().

Original

Ma méthode préférée consiste à enregistrer des feuilles Excel individuelles dans des fichiers CSV (valeurs séparées par des virgules). Sous Windows, ces fichiers sont associés à Excel pour que vous ne perdiez pas la "fonctionnalité" de double-clic-ouvrir-dans-Excel.

Les fichiers CSV peuvent être lus dans R à l'aide de read.csv() ou, si vous vous trouvez dans un emplacement ou à l'aide d'un ordinateur configuré avec certains paramètres européens (où , est utilisé comme position décimale), à ​​l'aide de read.csv2().

Ces fonctions ont des valeurs par défaut sensibles qui facilitent la lecture de fichiers correctement formatés. Il suffit de garder les étiquettes pour les échantillons ou les variables dans la première ligne ou la première colonne.

Le stockage de fichiers au format CSV offre l’avantage supplémentaire que, comme les fichiers sont en texte brut, ils peuvent être échangés très facilement et que vous pouvez être sûr qu’ils s’ouvriront n’importe où; on n'a pas besoin d'Excel pour regarder ou éditer les données.

20
Gavin Simpson

Exemple 2012:

library("xlsx")
FirstTable <- read.xlsx("MyExcelFile.xlsx", 1 , stringsAsFactors=F)
SecondTable <- read.xlsx("MyExcelFile.xlsx", 2 , stringsAsFactors=F)
  • Je voudrais essayer le paquet 'xlsx' car il est facile à manipuler et semble assez mature
  • a bien fonctionné pour moi et n’a besoin d’aucun accessoire comme Perl ou quoi que ce soit

Exemple 2015:

library("readxl")
FirstTable  <- read_Excel("MyExcelFile.xlsx", 1)
SecondTable <- read_Excel("MyExcelFile.xlsx", 2)
  • de nos jours, j'utilise readxl et j'en ai fait une bonne expérience.
  • pas besoin de trucs supplémentaires
  • bonne performance
18
petermeissner

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 sa rapidité.

14
RockScience

Si vous rencontrez le même problème et que R vous renvoie une erreur - impossible de trouver la fonction ".jnew" - Installez simplement la bibliothèque rJava. Ou si vous l'avez déjà, lancez simplement la bibliothèque de lignes (rJava). Cela devrait être le problème.

En outre, il devrait être clair pour tout le monde que les fichiers csv et txt sont plus faciles à utiliser, mais que la vie n’est pas facile et qu’il suffit parfois d’ouvrir un fichier xlsx.

5
Wilmer E Henao

J'ai récemment découvert la fonction d'importation de fichiers Excel dans R de Schaun Wheeler après avoir réalisé que le paquet xlxs n'avait pas été mis à jour pour R 3.1.0.

https://Gist.github.com/schaunwheeler/5825002

Le nom de fichier doit avoir l'extension ".xlsx" et le fichier ne peut pas être ouvert lorsque vous exécutez la fonction.

Cette fonction est vraiment utile pour accéder au travail d’autres peuples. Les principaux avantages par rapport à l’utilisation de la fonction read.csv sont les suivants:

  • Importer plusieurs fichiers Excel
  • Importer des fichiers volumineux
  • Fichiers mis à jour régulièrement

L'utilisation de la fonction read.csv nécessite l'ouverture et la sauvegarde manuelles de chaque document Excel, ce qui prend du temps et est très ennuyeux. Utiliser la fonction de Schaun pour automatiser le flux de travail est donc une aide considérable.

Gros accessoires à Schaun pour cette solution.

4
Jonno Bourne

Pour moi, le paquet openxlx a fonctionné de la manière la plus simple.

install.packages("openxlsx")
library(openxlsx)
rawData<-read.xlsx("your.xlsx");
4
Henrik Bata

Vous avez vérifié que R est effectivement en mesure de trouver le fichier, par exemple. fichier.existe ("C: /AB_DNA_Tag_Numbers.xlsx")? - Ben Bolker, le 14 août à 23h05

Le commentaire ci-dessus aurait dû résoudre votre problème:

require("xlsx")
read.xlsx("filepath/filename.xlsx",1) 

devrait bien fonctionner après cela.

2
contradirony

Quel est votre système d'exploitation? Quelle version de R utilisez-vous: 32 bits ou 64 bits? Quelle version de Java avez-vous installée?

J'ai eu une erreur similaire lorsque j'ai commencé à utiliser la fonction read.xlsx() et j'ai découvert que mon problème (qui peut ou non être lié au vôtre; au minimum, cette réponse doit être considéré comme "essayez ceci aussi") était liée à l'incompatibilité de .xlsx pacakge avec Java 64 bits. Je suis à peu près certain que le package .xlsx nécessite Java 32 bits.

Utilisez R 32 bits et assurez-vous que Java 32 bits est installé. Cela peut résoudre votre problème.

2
user2755425

J'ai essayé très fort sur toutes les réponses ci-dessus. Cependant, ils ne m'ont pas vraiment aidé parce que j'ai utilisé un mac. La bibliothèque rio possède cette fonction d’importation qui permet d’importer tout type de fichier de données dans Rstudio , même ceux utilisant des langues autres que l'anglais!

Essayez les codes ci-dessous:

    library(rio)
    AB <- import("C:/AB_DNA_Tag_Numbers.xlsx")
    AB <- AB[,1]

J'espère que cette aide. Pour une référence plus détaillée: https://cran.r-project.org/web/packages/rio/vignettes/rio.html

1
Suyang Xu

Vous pourrez peut-être conserver plusieurs onglets et davantage d'informations de formatage si vous exportez dans un fichier Spreadsheet OpenDocument ( ods ) ou dans un format Excel plus ancien et importez-le avec le lecteur ODS ou le lecteur Excel que vous avez mentionné ci-dessus.

1
Benjamin Atkin

Comme beaucoup l'ont dit ici, j'écris la même chose mais avec un point supplémentaire!

Au début, nous devons nous assurer que nos deux packages sont installés dans notre R Studio:

  1. "readxl"
  2. "XLConnect"

Pour charger un paquet dans R, vous pouvez utiliser la fonction ci-dessous:

install.packages("readxl/XLConnect")
library(XLConnect)
search()

search affichera la liste des paquetages actuellement disponibles dans votre R Studio.

Maintenant un autre problème, même si vous pouvez avoir ces deux paquets mais que vous pouvez quand même rencontrer un problème lors de la lecture du fichier "xlsx" et que l'erreur pourrait ressembler à "erreur: plus de colonnes que nom de colonne"

Pour résoudre ce problème, vous pouvez simplement réenregistrer votre feuille Excel "xlsx" dans

"CSV (délimité par des virgules)"

et votre vie sera super facile ....

S'amuser!!

1