Seite 1 von 1

Excel mit 250000 Zeilen einlesen WIE??

Verfasst: Di Nov 13, 2018 9:56 am
von leonard_24
Hallo zusammen,

habe ein Problem, wie der Betreff schon erahnen lässt: Auf der Arbeit habe ich von einem Kollegen eine Excelfile mit ca. 250.000 Zeilen bekommen. Bisher hatte ich mit den gängigen Befehlen keinerlei Probleme aber hier komme ich einfach überhaupt nicht weiter.
Die Datei in mehrere Einzeldatein aufsplitten kommt nicht in Frage, da es ein möglichst automatisierter Prozess werden soll, bei der man monatlich ein file zugeschickt bekommene.

Bisher hatte ich
Data <- read.table/csv/read.xlsx2...
wobei xlsx2 normalerweise ganz gut läuft
Jetzt kommt bei diesem Riesenfile immer die Fehlermeldung:
Error in .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl, :
java.lang.OutOfMemoryError: GC overhead limit exceeded
Habe schon im Internet mal geschaut, Lösungsansätze wie

Code: Alles auswählen
options(java.parameters = "- Xmx1024m")
haben mir nix gebracht. Kann man die xlsx vllt. irgendwie umformatieren um sie kleiner zu machen??

Kann mir irgendjemand helfen?

Gruße

Re: Excel mit 250000 Zeilen einlesen WIE??

Verfasst: Di Nov 13, 2018 10:40 am
von bigben
Hallo leonard,

normalerweise gilt die Faustregel, dass Tabellen die Excel fassen kann, für R kein Problem sind. 250.000 Zeilen sind normalerweise kein Thema (hängt natürlich irgendwie auch an der Zahl der Spalten... ;-) ). Es sollte also nicht daran, sondern an der Einleseroutine liegen. Deine Fehlermeldung bezieht sich auf den Garbage Collector von Java - stellt sich die Frage, wozu wir hier Java brauchen. Kannst Du die Daten in Excel als csv speichern und dann mit read.csv2 einlesen?

LG,
Bernhard

Re: Excel mit 250000 Zeilen einlesen WIE??

Verfasst: Di Nov 13, 2018 11:35 am
von leonard_24
wenn ich die datei (11 MB) in eine csv umformatiere habe ich auf einmal eine 48 MB Datei...
einlesen kann er es jetzt zwar :D , allerdings funktionieren meine funktionen nur noch zum teil, vllt, weil das auf den alten xlsx files basiert

z.b.
Extrahiert <- Liste[grepl("^Produktx",Liste$Product),]
funktioniert nicht mehr, da kommt nur ein leerer Vektor raus

Re: Excel mit 250000 Zeilen einlesen WIE??

Verfasst: Di Nov 13, 2018 12:33 pm
von bigben
Naja xlsx ist ein komprimiertes Format, csv ein unkomprimiertes. Da sind die Dateien halt mal größer. Ist das ein Problem für Deinen "automatisierten Prozess"?

"Funktioniert nicht mehr" heißt, es gibt eine Fehlermeldung oder nur, dass Dir das Ergebnis mit der leeren Liste nicht passt? Ich weiß natürlich nicht, woran das liegt, vermute aber, dass Liste$Product jetzt kein String mehr, sondern ein Factor ist. Schuss ins Blaue: Versuch beim Einlesen mit read.csv2 mal das Argument stringsAsFactors = FALSE . Vielleicht löst das schon das Problem.

Sonst bitte mal die Ergebnisse folgender Kommandos posten:

Code: Alles auswählen

str(Liste)
head(Liste)
summary(Liste)
LG,
Bernhard

Re: Excel mit 250000 Zeilen einlesen WIE??

Verfasst: Di Nov 13, 2018 1:36 pm
von leonard_24
nochmals vielen dank für den tipp mit csv, die datei ist zwar 4x so groß aber einlesen funktioniert
Ich musste jedoch komischerweise einige codezeilen umschreiben, da sie nicht mehr ohne fehlermeldung liefen (warum auch immer???)
passt jetzt auf jeden fall
gruß

Re: Excel mit 250000 Zeilen einlesen WIE??

Verfasst: Di Nov 13, 2018 2:13 pm
von Athomas
Ich bin wegen ähnlicher Schwierigkeiten auf openxlsx umgeschwenkt, das kommt ohne Java aus...

Re: Excel mit 250000 Zeilen einlesen WIE??

Verfasst: Di Nov 13, 2018 8:31 pm
von EDi
Oder readxl mal ausprobieren...

Re: Excel mit 250000 Zeilen einlesen WIE??

Verfasst: Mi Nov 14, 2018 8:02 am
von student
Vielleicht hilft auch dieser Hinweis weiter?