2012-05-08 2 views
4

nous avons plus de 7000 fichiers de données Excel pour .xlsx (2010). ma version R est R 2.15.0. Si je fais une opération manuelle pour convertir xlsx en xlx, .cvs, ou txt., Il passera plus de temps à le faire.comment importer le fichier xlsx (2010) dans R 2.15.0

+0

Utilisez le package "XLConnect" – Andrie

+0

Consultez http://stackoverflow.com/questions/1858195/convert-xls-to-csv-on-command-line –

Répondre

1

Je n'ai pas utilisé XLSconnect mais mes étudiants ont utilisé le package xlsx. Ensuite, la fonction read.xlsx ou read.xlsx2 sera lue dans la feuille xls. Ce paquet a des options pour lire et écrire le format xls et peut lire et écrire des feuilles spécifiques dans la feuille de calcul et dans des régions spécifiques. Le seul conseil formel que j'ai donné à mes étudiants (sophomores de biologie) pour employer ce paquet est que la feuille de calcul doit être bien formée. (tous les éléments sont des données et non des formules, la première ligne est le nom de la variable en minuscule sans aucun caractère autre que la lettre et les lignes 2 - ## ont les données pour chaque variable. sont sur la même ligne) Il n'a pas * .xls pour être aussi strict mais je voulais le minimum de problèmes pour les étudiants lors de la lecture de leurs fichiers de données.

+1

Les packages 'xlsx' et' XLConnect' utilisent les mêmes bibliothèques Java. Mais à mon avis, XLConnect est * beaucoup * meilleur (c'est-à-dire une meilleure facilité d'utilisation ainsi qu'une meilleure couverture de la bibliothèque) – Andrie

+0

Bon à savoir, j'étudierai en utilisant ceci avec mes étudiants. – Schumacher

+0

J'utilise library ("XLConnect"), mais il semble faux. et demandez-moi de ré-installer le Java. donc je réinstalle le Java, mais il ne peut pas non plus fonctionner. Chargement du package requis: XLConnectJars Chargement du package requis: rJava Erreur: .onLoad échoué dans loadNamespace() pour 'rJava', détails: call: stop ("Aucune entrée CurrentVersion dans '", touche, "'! l'installation de Java et assurez-vous que R et Java ont des architectures correspondantes.«) erreur: objet « clé » introuvable Erreur: package « Rjava » n'a pas pu être chargé –

1

Fonction read.xls dans le package gdata lira xlsx et xls fichiers dans R. Je l'utilise fréquemment.

On dirait que vous avez beaucoup de fichiers Excel pour travailler avec, voici ce que je fais pour obtenir un grand nombre de ces fichiers (à la fois xlsx et xls) dans R:

Set travaillant directement à l'emplacement de mes fichiers Excel

setwd("F:\\ address of folder with all my Excel files") 

Faites une liste de tous les fichiers dans le répertoire de travail

Vérifiez la liste Créer une liste qui contient toutes les données des fichiers xls et xlsx contenus dans le répertoire de travail.

MyFiles 

C'est comme une fonction d'importation de données par lots.

library(gdata) 
Mylist <- lapply(MyFiles, read.xls) 

Vérifiez que cette lecture de tous les fichiers dans le dossier, dans le cas où certains fichiers Excel sont corrompus, etc. Si le résultat est FALSE alors il y a un problème.

identical(length(MyFiles), length(Mylist)) 

Puis-je continuer avec sapply, etc. pour exécuter des fonctions sur les données contenues dans les fichiers.

+1

Oui, quand je télécharge le paquet gdata, en utilisant uniquement cette phrase « un <-read.xls (» file.name.xlsx «feuille = 3) », tout le problème soit résolu. –

+0

@ZhiqiangChen J'ai ajouté quelques détails sur l'importation lot un grand nombre de fichiers Excel dans 'R', qui pourrait vous être utile aussi. – Ben

+1

Hier j'utilise gdata paquet pour lire le xlsx.La vitesse est très lente.noly un fichier, il doit exécuter 2 secondes.les programmes comme suit: bibliothèque ("gdata") pour (i en 1: 7000) { file.name < -paste ("C:/Users/zhen0001/données de bureau/Silciscan/B4E _", i "_ SilviScan_Report.xlsx", septembre = "") possibleError = TryCatch (données <- read.xls (file.name, feuille = 3), erreur = fonction (e) e) if (hérite (possibleError, "erreur")) suivante a = min (données [1]) b = max (données [1]) c <-B-a + 1 d <-c (i , a, b, c) print (d) } –

Questions connexes