Der beste Weg, Daten für statistische Analysen einfach in R zu speichern [closed]

12

Ich verwende seit einiger Zeit problemlos Textdateien, um meine Daten für R zu speichern. Für ein aktuelles Projekt werden die Dateigrößen jedoch zu groß, um Rohtextdateien verarbeiten zu können. Was ist die beste einfache Alternative?

Spielzeug Molto
quelle
5
Inwiefern werden Textdateien zu groß? Hast du Angst um ihre Integrität? Sie können sie in keiner anderen Software öffnen? Sind sie zu langsam zum Laden? Zu groß für deine Festplatte (Laptop?)?
Gala
3
+1 Das Verwalten von Daten bei wachsenden Projekten ist ein universelles Thema in der Datenanalyse (und kaum spezifisch R). Das grundlegende Problem ist die Datenintegrität und nicht die Dateigröße: Wenn Sie eine Komprimierungsmethode vorschlagen, wird diese lediglich verdeckt und nicht gelöst.
Whuber
Ab einer bestimmten Größe scheint txt einfach nicht mehr zu funktionieren. Ich kann die zusätzlichen Daten zur txt-Datei hinzufügen und in R laden, aber die zusätzlichen Daten sind nicht in R. (Übrigens sind die Daten ziemlich umfangreich, so dass die Komprimierung ein bisschen hilfreich sein kann, wenn sie mich und mich nicht so weit bringen würde Ich vermute, wenn mein Projekt wächst, werde ich wieder mit den gleichen Problemen enden.)
Toy Molto
Sie müssen uns mehr über Ihre Daten erzählen, es gibt keinen "besten Weg zu irgendwelchen Daten".
zx8754
Meinst du das read.tableoder read.csvscheitern stillschweigend? Sind Sie sich absolut sicher, dass nicht mehrere Dateien herumliegen und ein Codierungsfehler vorliegt (falscher Pfad, falscher Dateiname usw.)? Um Ideen zu korrigieren, möchten Sie uns möglicherweise auch eine Vorstellung davon geben, mit wie vielen Variablen und wie vielen Datensätzen Sie ungefähr zu tun haben.
Gala

Antworten:

10

Der Standard-R-Ansatz ist die Verwendung von saveund load. Wenn Sie saveIhren Datenrahmen nach dem Importieren und Kommentieren ausführen , können Sie dies angeben, compress=TRUEund Sie werden von der Komprimierung und der schnellen loadZeit begeistert sein. Dies funktioniert besonders gut, wenn die Objektgröße weniger als 400 MB beträgt. Ansonsten sehen Sie sich einige der obigen Vorschläge oder das leistungsstarke ffPaket in R an.

Das HmiscPaket hat kleine Hüllen Saveund Loadum das oben Genannte noch schmerzloser zu machen:

mydata <- csv.get(...)  # Hmisc package, has several options
Save(mydata)   # writes mydata.rda to current working directory
....
Load(mydata)   # reads mydata.rda and creates mydata data frame
Frank Harrell
quelle
9

Schauen Sie sich SQLite3-Datenbanken an. Jede Datenbank ist eine Datei, sodass kein Datenbankserver eingerichtet werden muss.

So erstellen Sie eine Datenbank:

$ sqlite3 my_db.db3
> CREATE TABLE my_table ( col1 TEXT );

Zur Verwendung mit R https://gist.github.com/lynaghk/1062939

Momeara
quelle
+1 Die Verwendung einer tatsächlichen Datenbank ist ein großer Schritt in die richtige Richtung.
Whuber
Wäre dies das geeignete Werkzeug? cran.r-project.org/web/packages/RSQLite/index.html
Reinstate Monica
Danke, ich werde diese Route ausprobieren. Ich habe mir auch MySQL angesehen, aber es scheint mehr zu sein, als ich brauche.
Toy Molto
4

Es gibt eine Reihe von generischen Optionen.

  • Sie könnten den Text komprimieren.
  • Sie könnten den Text binär bearbeiten und nicht in ASCII schreiben

Eine gute Komprimierung ist datenabhängig.

Meine Vermutung (und Sie haben es nicht angegeben, also muss ich raten) ist, dass Sie Tabellenkalkulations-ähnliche Daten in etwas anderem als csv (kommagetrennt) speichern möchten.

Eines meiner Lieblingsformate (ich liebe MatLab) ist hdf.

Hier sind R-bezogene Informationen zu HDF:

Es ist ein Supercomputing-Datenspeicherformat mit hoher Dichte. Es kann sehr schnell und effizient sein. Es ist auch (nicht überraschend) dichter als gezippter Text.

EngrStudent - Setzen Sie Monica wieder ein
quelle
3

Mit den Standardfunktionen zum Lesen von Dateien in R können jetzt automatisch komprimierte Dateien gelesen werden. Führen Sie einfach eine einfache gzip-Komprimierung für Ihre Daten durch und lesen Sie sie wie immer, als ob es sich um reinen Text handelte.

read.table('myfile.gz')
John
quelle
Ordentlich! Das wusste ich nicht. Vielen Dank.
EngrStudent