Wie man CSV-Dateien in ZIP-Archiven in R importiert

ZIP-Dateien sind praktisch, daran gibt es kaum Zweifel. Dank dieser Archive lassen sich mehrere Dateien zusammengefasst über verschiedene Wege weitergeben. Doch muss der Empfänger am anderen Ende dann auch diese erst wieder entpacken, um den eigentlichen Inhalt nutzen zu können. Nehmen wir an, wir basteln uns ein Skript, dass regelmäßig CSV-Dateien auswertet. Diese werden uns nur gebündelt als ZIP bereitgestellt. Diese könnte man jetzt manuell entpacken und weiterverarbeiten, aber wir wollen das automatisieren. Also fragen wir uns, wie man nun die CSV-Dateien in ZIP-Archiven in R importieren kann. Dazu gibt es einige Ansätze, die ich hier kurz vorstellen möchte.

Variante 1: eingebaute Mittel

Wer keine zusätzlichen Mittel sondern nur den Basis-Code einsetzen möchte, sollte sich der unz-Funktion bedienen. Dazu ein paar Beispiele

CSV direkt einlesen

read.csv(unz('archiv.zip','datei.csv'), header = T)

ZIP entpacken und danach CSV einlesen

read.csv(unz('archiv.zip','archiv/datei.csv'), header = T)

Variante 2: data.table fread

Alternativ können wir auch auf die Funktion fread von data.table zurückgreifen. Diese kombinieren wir dann mit einem Befehl zum Entpacken, der je nach Betriebssystem unterschiedlich sein kann. Hier gilt es zu beachten, dass die Pfade zu g/unzip entsprechend in der PATH-Umgebungsvariable hinterlegt sind. Ist dies nicht der Fall, gibt es hier eine entsprechende Anleitung.

Windows: unzip

fread(cmd = 'unzip -p archiv.zip')

Linux: gunzip

fread(cmd = 'gunzip -cq archiv.zip')

Plattformübergreifend: 7-Zip

fread(cmd = '7z e -so archiv.zip')

Variante 3: vroom

Das Beste kommt bekanntlich zum Schluss. Dafür habe ich mir vroom aufgehoben. Mit dieser Funktion kann man direkt die ZIP-Datei weiterverarbeiten, ohne zusätzliche Befehle ausführen zu müssen.

vroom('archiv.zip')

Damit sind die gängigsten Wege zum Thema, wie man CSV-Dateien in ZIP-Archiven in R importieren kann, erklärt. Wenn ihr einen weiteren parat oder noch etwas anzufügen habt, dann lasst mal einen Kommentar da.

Schreibe einen Kommentar