5 Daten exportieren
Nachdem Daten bereinigt und transformiert wurden, möchten wir diese häufig exportieren – etwa zur Weitergabe, Dokumentation oder Weiterverarbeitung in anderer Software wie Excel oder Statistikprogrammen. In R können Datensätze verschiedenen Formaten (beispielsweise als CSV-, Excel- oder RDS-Dateien) gespeichert werden, sodass sie reproduzierbar gesichert und flexibel weiterverwendet werden können.
Wie in Kapitel 4 werden wir auch beim Exportieren von Datensätzen auf Funktionen von tidyverse/readr und haven. Für den Export von Excel-Dateien benötigen wir das Package writexl:
5.1 Datensätze exportieren
Wir üben in diesem Kapitel den Export von Datensätzen anhand der aufbereiteten earnings Daten aus Kapitel 4. Solltest du den zugrundeliegenden Datensatz noch nicht von Github heruntergeladen haben, folge den Schritten im vorherigen Kapitel. Dort haben wir diese Daten auch eingelesen und aufbereitet:
earnings <- read_csv("data/raw/earnings_data/earnings.csv",
na = c("", "NA", "N/A")) |>
rename(
name = Names,
age = age.in.years,
nationality = Nationalität,
income = `inc in Eur`
) |>
mutate(income = parse_number(income))Diesen Datensatz werden wir nun in mehreren Versionen in unserem Subordner für aufbereite Daten abspeichern (r_intro/data/processed).
Der Export von Daten folgt in R immer dem Schema write_filetype(object_name, "file_name").
5.1.1 CSV-Dateien
Möchten wir, dass die Daten später möglichst flexibel - also auch in anderen Programmen - einlesbar sind, bietet sich das .csv-Format an. Der Export einer .csv-Datei erfolgt dabei über die Funktion write_csv() aus dem tidyverse/readr Package:
write_csv(earnings, "data/processed/earnings.csv")Da unser R-Project als Working Directory automatisch den Ordner r_intro wählt, müssen wir nicht den gesamten Dateipfad angeben, sondern nur relativ zum Working Directory (in diesem Fall data → processed).
Damit die .csv-Datei mit der im deutschen Sprachraum üblichen Spaltentrennung ; anstelle des Kommas gespeichert wird, verwenden wir read_csv2():
write_csv2(earnings, "data/processed/earnings_de.csv")5.1.2 RDS-Dateien
Der Nachteil an .csv Dateien ist, dass sie nicht alle in R definierten Merkmale des Datensatzes erhalten. Insbesondere factor-Variablen werden im .csv-Format nicht übernommen, sondern als character abgespeichert. Möchten als in R beim späteren Einlesen eine solche Variable wieder als factor verwenden, müssen wir den Datentyp erneut anpassen.
Arbeitet man exklusiv in R empfiehlt sich daher das Exportiern von Daten in R-spezifischen Dateiformaten. Mit write_rds() können wir ein Objekt als .rds-Datei exportieren:
write_rds(earnings, "data/processed/earnings.rds")Bei sehr großen Datensätzen kann über das Argument compress = ... der Datensatz im komprimierter Form gespeichert werden (siehe help(write_rds)).
Möchten wir mehrere Objekte in einer Datei abspeichern, können wir diese in R als RData-Datei mit save() exportieren:
Beim späterem Importieren dieser Datei lädt R dann jedes der darin enthaltenen Objekte ins Environment. Dies ist etwa von Vorteil, wenn wir viele kleine Objekte (zum Beispiel Ergebnisse unterschiedlicher Regressionsmodelle) haben, die wir später immer nur in gesammelter Form verwenden möchten. Durch das Speichern mehrerer Objekte in einer Datei bleibt der Output-Ordner übersichtlich.
5.1.3 Excel-Spreadsheets
Datensätze können auch mit write_xlsx() (writexl Package) als Excel-Spreadsheet abgespeichtert werden:
write_xlsx(earnings, "data/processed/earnings.xlsx")Alternativ können wir auch auf das Package openxlsx zurückgreifen, welches zusätzliche Optionen zum Formatieren des Excel-Spreadsheets (etwa Hintergrundfarben bestimmter Zellen) bietet. Für mehr Informationen, siehe R for Data Sciene sowie die Unterlagen der Package-Autoren.
5.1.4 Stata-Datensätze
Um einen Datensatz später in Stata verarbeiten zu können, speichern wir diesen im .dta-Format ab. Dafür benötigen wir das Package haven und die darin enthaltene Funktion write_dta():
write_dta(earnings, "data/processed/earnings.dta")Stata behandelt manche Datentypen wie etwa factor anders als R, in dem es den einzelnen kategorischen Ausprägungen numerische Werte zuordnet und diese mit Labels versieht. Um solche Variablen korrekt zu labeln können wir auf das Package labelled zurückgreifen. Dieses bietet auch weitere Optionen für das Abspeichern von .dta-Dateien (siehe Package-Dokumentation).