data > opinion

Tom Alby

CSV-Dateien importieren mit RStudio

2021-12-31


Letzte Woche hatten wir uns die Unterschiede zwischen dem CSV- und dem JSON-Format angesehen, heute wollen wir uns die Optionen des CSV-Datenimports in RStudio genauer ansehen.

Zunächst einmal können wir CSV-Dateien “ganz einfach” über den passenden Befehl importieren, read.csv mit seinen Geschwistern ist bereits in base R vorhanden und benötigt keine weitere Library. Allerdings ist es meistens sinnvoll, sich die Datei einmal genauer anzusehen, bevor man sie importiert, und hier kommen Importe über die graphische Benutzerschnittstelle ins Spiel. RStudio bietet dazu zwei Optionen im Environment-Panel:

Wir schauen uns zunächst die erste Option an.

Importieren mit base R

Sehr schön ist, dass wir sowohl die Input-Datei sehen als auch die daraus generierte Tabelle. Allerdings werden auch nur die ersten 20 Zeilen angezeigt. Dass das problematisch ist, werden wir später noch sehen. Widmen wir uns zunächst einmal den charmanten Optionen:

In diesem Beispiel nutze ich den Books-Datensatz, der einige Problemchen mit sich bringt, allerdings erst einige 10.000 Zeilen später. Die Daten werden ohne Fehlermeldung importiert. Aber das ist tatsächlich problematisch, denn es gibt Fehler. Zum einen werden weniger als die Hälfte der Daten importiert. Zum andern werden nicht alle Spalten in allen Zeilen korrekt importiert, wie wir erkennen können, wenn wir mal nach einem Anführungszeichen suchen:

Komm auf meine Mailing-Liste, wenn Du Infos über meine Bücher oder Datenanalyse- & Data Science-Tipps in Deiner Mailbox haben willst!

Das lässt sich relativ einfach beheben. Allerdings ist es mit readr etwas einfacher.

Importieren mit readr

Generell sieht die zweite Option mit readr etwas anders aus. So sehen wir zum Beispiel nicht die Original-Datei, der Separator wird auch nicht automatisch erkannt. Auf dem folgenden Screenshot habe ich bereits den richtigen Separator (hier “Delimiter” genannt) ausgewählt. Die Vorschau ist hier etwas länger, die Zeilen mit den Fehlern sehen wir aber auch hier nicht.

Wir haben aber auch Optionen, die es in der base R-Variante nicht gibt. Wir können zum Beispiel Zeilen und Spalten skippen. Das ist zum Beispiel in diesem Datensatz eine gute Option, da wir die Amazon-Links in der Regel nicht benötigen. Ich mag an dieser Variante auch, dass wir den Code, den wir zum Importieren benötigen, rechts unten sehen. Tatsächlich kopiere ich ihn ohne die erste und letzte Zeile meistens raus, klicke auf “Cancel” und füge den Code dann in mein Notebook ein. Dann muss ich den Import kein zweites Mal manuell durchführen. Die Library ebenso wie das View nehme ich nicht mit rein, denn meistens ist das Tidyverse eh schon installiert und geladen.

Netterweise weist uns readr auf Fehler hin:

Der Fehler kommt daher, dass in den Titeln zum Teil Anführungszeichen sind. Nutzen wir ein Escape-Zeichen, zum Beispiel einen Backslash, dann werden die Daten korrekt importiert. Das Fiese ist, dass selbst dann nicht alle Probleme behoben sind. Aber dazu ein anderes Mal mehr.

Die readr-Variante bietet uns noch ein paar Optionen mehr: Unter Locale können wir mehr als nur den Dezimaltrenner konfigurieren, zum Beispiel auch das Gruppierungszeichen. Das ist extrem nützlich.

Wir sehen, dass beide Varianten Vor- und Nachteile haben. Keine Variante aber schafft es, alle Probleme automatisch zu erkennen und zu beheben. Daher bleibt es dabei, was Martin Szugat einmal sagte: Das beste Analyse-Tool ist immer noch zwischen unseren Ohren.

Ein ziemlich cooles Tool für das Handling von CSV-Dateien ist übrigens TableCruncher von Stefan Fischerländer. Es erlaubt uns auch, die Daten zu bearbeiten, was in der View-Funktion von RStudio nicht geht (obwohl wir das in R können). Bei diesem Beispiel-Datensatz ist das Tool von Stefan deswegen gut, weil es uns erlaubt, ein paar Encoding-Probleme manuell zu beseitigen. Das geht zwar auch mit vi oder nano im Terminal von RStudio. aber ganz so bequem ist es nicht.

Tags: