Wie importiert man Daten in R?
In diesem Beitrag
- Warum der Datenimport wichtiger ist als er klingt
- CSV- und Textdateien importieren mit readr
- Excel-Dateien importieren mit readxl
- SPSS-, Stata- und SAS-Dateien importieren mit haven
- Datenimport ohne Zusatzpakete – Base R
- Nach dem Import: Daten prüfen und bereinigen
- Häufige Fehler beim Datenimport
- Welches Paket für welches Format? Eine Übersicht
Warum der Datenimport wichtiger ist als er klingt
Daten in R zu importieren klingt nach einem schnellen ersten Schritt – in der Praxis ist es das aber nicht immer. In der Realität empirischer Abschlussarbeiten offenbart sich hier häufig das erste größere Hindernis: Die Daten liegen in einem unerwarteten Format vor, Dezimaltrennzeichen stimmen nicht, oder Variablentypen werden falsch erkannt.
Das offizielle R-Manual hält dazu fest, dass Datenimport und Ergebnisexport in der Praxis oft deutlich mehr Zeit beanspruchen als die eigentliche statistische Analyse. Diese Einschätzung deckt sich mit dem, was Studierende in Beratungsgesprächen regelmäßig berichten.
Der gute Ansatz: Dateiformat zuerst identifizieren, dann das passende Werkzeug wählen. Dieser Artikel führt Sie Schritt für Schritt durch die häufigsten Szenarien – von der einfachen CSV-Datei bis zur SPSS-Datei aus einer Umfrage.
CSV- und Textdateien importieren mit readr
CSV-Dateien sind das mit Abstand häufigste Dateiformat in der empirischen Forschung. Ob aus Online-Umfragetools, Datenbanken oder Excel-Exporten – fast immer können Daten als CSV gespeichert werden. Für den Import in R empfiehlt sich das Paket readr, das zum tidyverse-Ökosystem gehört.
Die wichtigsten readr-Funktionen
Je nach genauen Trennzeichen und Dezimalformaten der Datei gibt es verschiedene spezialisierte Importfunktionen, die readr für unterschiedliche Dateiformate bereitstellt:
- read_csv() – kommagetrennte Dateien (Standard in englischsprachigen Systemen)
- read_csv2() – semikolongetrennte Dateien mit Komma als Dezimalzeichen (typisch für DACH-Exporte)
- read_tsv() – tabulatorgetrennte Dateien
- read_delim() – beliebige Trennzeichen, manuell angegeben
- read_fwf() – Dateien mit Spalten fester Breite
- read_table() – durch Leerzeichen getrennte Tabellen
Für Abschlussarbeiten aus dem deutschsprachigen Raum ist read_csv2() besonders relevant, weil viele Umfragetools und Excel-Versionen im DACH-Raum Semikolon als Trennzeichen und ein Komma als Dezimalzeichen verwenden.
Schritt-für-Schritt: CSV-Datei importieren
# Paket laden
library(readr)
# Kommagetrennte CSV-Datei (englisches Format)
daten <- read_csv("meine_daten.csv")
# Semikolongetrennte CSV-Datei (deutsches Format)
daten <- read_csv2("meine_daten.csv")
# Spaltentypen nach Import prüfen
spec(daten)
Der Aufruf spec(daten) nach dem Import ist keine optionale Spielerei – er zeigt genau, welche Datentypen readr für jede Spalte angenommen hat. Wenn eine ID-Variable versehentlich als Zahl statt als Zeichenkette eingelesen wurde oder ein Datum als Text gilt, erkennen Sie das hier sofort.
spec() oder str(daten), ob alle Variablen korrekt erkannt wurden – bevor Sie mit der Analyse beginnen.Explizite Spaltentypen angeben
Für ausgereifte Analyseprojekte empfiehlt es sich, Spaltentypen nicht dem Automatismus zu überlassen, sondern sie explizit zu definieren:
daten <- read_csv(
"meine_daten.csv",
col_types = cols(
id = col_character(),
alter = col_integer(),
ergebnis = col_double(),
gruppe = col_factor()
)
)
Gerade Faktoren – also kategoriale Variablen wie Gruppen, Geschlecht oder Bildungsniveau – werden von readr standardmäßig als Zeichenketten eingelesen. Wenn Sie diese direkt bei der Analyse brauchen, lohnt es sich, sie bereits beim Import korrekt zu typisieren.
Excel-Dateien importieren mit readxl
In der Praxis erhalten Forschende ihre Daten häufig als Excel-Datei – aus Datenbanken, von Kooperationspartnern oder direkt aus dem Fragebogentool. Das Paket readxl ist dafür die empfohlene Lösung innerhalb des tidyverse.
Warum readxl?
readxl benötigt keine externen Abhängigkeiten und läuft stabil auf Windows, macOS und Linux. Es liest sowohl .xls- als auch .xlsx-Dateien und erkennt das Format automatisch anhand der Dateiendung – Sie müssen also nicht zwischen alten und neuen Excel-Formaten unterscheiden.
# Paket laden
library(readxl)
# Erste Tabelle der Excel-Datei importieren
daten <- read_excel("meine_daten.xlsx")
# Bestimmtes Tabellenblatt auswählen
daten <- read_excel("meine_daten.xlsx", sheet = "Rohdaten")
# Nur bestimmte Zeilen und Spalten einlesen
daten <- read_excel("meine_daten.xlsx", sheet = 1, range = "A1:F200")
Der Parameter sheet akzeptiert sowohl den Namen des Tabellenblatts als auch seine Position (als Zahl). Wenn Ihre Excel-Datei mehrere Blätter enthält, lohnt es sich, den Namen explizit anzugeben, damit das Skript auch nach Änderungen der Blatt-Reihenfolge noch korrekt funktioniert.
SPSS-, Stata- und SAS-Dateien importieren mit haven
Wer Daten aus anderen Statistikprogrammen übernimmt – etwa von einem Kooperationspartner, der mit SPSS arbeitet, oder aus einem institutionellen Datensatz im Stata-Format – braucht das Paket haven. Es unterstützt alle drei großen proprietären Statistikformate.
Die Importfunktionen im Überblick
- read_sav() – SPSS-Dateien (.sav)
- read_por() – SPSS Portable-Dateien (.por)
- read_dta() – Stata-Dateien (.dta)
- read_sas() – SAS-Dateien (.sas7bdat)
- read_xpt() – SAS Transport-Dateien (.xpt)
# Paket laden
library(haven)
# SPSS-Datei importieren
daten <- read_sav("umfrage.sav")
# Stata-Datei importieren
daten <- read_dta("panelstudie.dta")
# SAS-Datei importieren
daten <- read_sas("messdaten.sas7bdat")
Besonderheit: Wertelabels und fehlende Werte
Das Arbeiten mit haven-importierten Daten hat eine Besonderheit, die viele Studierende überrascht: SPSS-Variablen haben oft Wertelabels (z.B. 1 = "männlich", 2 = "weiblich"). haven behält diese Labels in einer speziellen labelled-Klasse, konvertiert sie aber nicht automatisch in R-Faktoren.
Für die meisten statistischen Analysen müssen Sie labelled-Variablen zuerst in Faktoren umwandeln. Das geht am einfachsten mit:
library(haven)
library(dplyr)
daten <- read_sav("umfrage.sav") |>
mutate(across(where(is.labelled), as_factor))
Außerdem bewahrt haven SPSS-spezifische fehlende Werte (sogenannte tagged NAs) – also Kategorien wie "nicht beantwortet" oder "weiß nicht", die in SPSS als spezielle Missings kodiert sind. Wie Sie mit diesen Werten korrekt umgehen, beschreibt der weiterführende Beitrag zum Thema fehlende Werte in R.
Datenimport ohne Zusatzpakete – Base R
Wer keine Pakete installieren möchte oder kann, kommt auch mit den in R bereits eingebauten Funktionen weit. Diese sogenannten Base-R-Funktionen sind etwas weniger komfortabel als die tidyverse-Alternativen, aber vollständig funktionsfähig.
- read.csv() – kommagetrennte CSV-Datei
- read.csv2() – semikolongetrennte CSV-Datei (deutsches Format)
- read.table() – flexibler Textimport mit konfigurierbaren Trennzeichen
- scan() – grundlegende Lesefunktion für Rohdaten; steht hinter vielen anderen Importfunktionen
# Base R: CSV-Import (englisches Format)
daten <- read.csv("meine_daten.csv")
# Base R: CSV-Import (deutsches Format, Semikolon + Komma)
daten <- read.csv2("meine_daten.csv")
# Base R: Flexibler Textimport
daten <- read.table("meine_daten.txt", header = TRUE, sep = "\t", dec = ",")
Der Unterschied zu readr: Base-R-Funktionen geben einen klassischen data.frame zurück, während readr einen tibble produziert. Für die meisten Analysen spielt das keine Rolle. Wer jedoch konsequent im tidyverse arbeitet, wird readr bevorzugen.
Nach dem Import: Daten prüfen und bereinigen
Unabhängig davon, welches Importverfahren Sie genutzt haben – die ersten Schritte nach dem Import sollten immer gleich sein. Hier sind die wichtigsten Prüfroutinen:
Checkliste: Daten nach dem Import prüfen
- Struktur prüfen:
str(daten)oderglimpse(daten) - Erste Zeilen ansehen:
head(daten) - Anzahl Zeilen und Spalten prüfen:
dim(daten) - Fehlende Werte identifizieren:
colSums(is.na(daten)) - Spaltentypen kontrollieren: bei readr mit
spec(daten), sonststr(daten) - Kategoriale Variablen in Faktoren konvertieren, falls nötig
- Dezimalzahlen und Datumsvariablen auf korrekte Erkennung prüfen
Dieser Kontrollschritt ist kein Luxus, sondern methodische Notwendigkeit. Ein falsch typisierter Prädiktor in einer Regressionsanalyse oder eine fehlerhaft kodierte Gruppenvariable bei einem t-Test können die gesamte Auswertung verfälschen – ohne dass R eine Fehlermeldung ausgibt.
Häufige Fehler beim Datenimport
Bestimmte Fehler begegnen in der Beratungspraxis immer wieder. Das Wissen darum spart viel Zeit bei der Fehlersuche.
Falsches Arbeitsverzeichnis
R sucht Dateien standardmäßig im aktuellen Arbeitsverzeichnis. Wenn der Import-Befehl einen Fehler wie "cannot open file: No such file or directory" wirft, liegt das fast immer daran. Prüfen Sie mit getwd(), wo R gerade arbeitet, und setzen Sie das richtige Verzeichnis mit setwd() oder – noch besser – verwenden Sie RStudio-Projekte, die das Arbeitsverzeichnis automatisch auf den Projektordner setzen.
Falsches Trennzeichen oder Dezimalzeichen
Wenn ein importierter Datensatz statt vieler Spalten nur eine einzige Spalte mit langen Zeichenketten enthält, ist das Trennzeichen falsch eingestellt. Häufige Ursache: read_csv() statt read_csv2() bei einer deutschen CSV-Datei. Öffnen Sie die Datei kurz im Texteditor, um das tatsächliche Trennzeichen zu sehen.
Encoding-Probleme bei Sonderzeichen
Umlaute (ä, ö, ü) oder andere Sonderzeichen erscheinen nach dem Import als kryptische Zeichen? Das ist ein Encoding-Problem. Meist hilft die Angabe des korrekten Zeichensatzes:
# UTF-8 explizit angeben (Standard auf den meisten Systemen)
daten <- read_csv("meine_daten.csv", locale = locale(encoding = "UTF-8"))
# Windows-Dateien aus dem DACH-Raum oft mit Latin1
daten <- read_csv("meine_daten.csv", locale = locale(encoding = "latin1"))
Sehr große Datensätze
Das offizielle R-Manual weist darauf hin, dass R nicht immer die geeignete Umgebung für sehr umfangreiche Datenmanipulationen ist und bei sehr großen Datenmengen externe Datenbankwerkzeuge sinnvoller sein können. Für Abschlussarbeiten mit typischen Stichprobengrößen ist das in der Regel kein Problem – aber bei sehr großen Sekundärdatensätzen (z.B. >500.000 Zeilen) lohnt ein Blick auf Alternativen wie das Paket data.table oder den direkten Datenbankzugriff über DBI.
Welches Paket für welches Format? Eine Übersicht
| Dateiformat | Dateiendung | Empfohlenes Paket | Funktion |
|---|---|---|---|
| CSV (englisch) | .csv | readr | read_csv() |
| CSV (deutsch, Semikolon) | .csv | readr | read_csv2() |
| Tabulator-getrennt | .tsv / .txt | readr | read_tsv() |
| Excel | .xlsx / .xls | readxl | read_excel() |
| SPSS | .sav / .por | haven | read_sav(), read_por() |
| Stata | .dta | haven | read_dta() |
| SAS | .sas7bdat / .xpt | haven | read_sas(), read_xpt() |
| Allgemeiner Text | .txt | Base R | read.table() |
Alle drei Pakete – readr, readxl und haven – stammen aus dem tidyverse und harmonieren gut miteinander. Sie können innerhalb eines Projekts problemlos alle drei gleichzeitig verwenden. Welche weiteren Pakete für die statistische Auswertung in R nützlich sind, finden Sie im Beitrag zu den wichtigsten R-Paketen für empirische Analysen.
Sobald die Daten sauber importiert sind, steht die eigentliche Auswertung an. Ob Sie Diagramme mit ggplot2 erstellen, eine ANOVA durchführen oder Effektstärken berechnen möchten – die Grundlage ist immer ein korrekt eingelesener und geprüfter Datensatz. Wenn Sie dabei Unterstützung benötigen, bietet QuantExpert eine methodische Begleitung für R-Auswertungen – von der Datenaufbereitung bis zur Ergebnisinterpretation.