Statistik mit R & RStudio
20 Datenmanagement mit R
Datenmanagement
R ist ein leistungsstarkes Werkzeug für die Datenverwaltung und Datenbereinigung. R verfügt über zahlreiche Funktionen und Pakete zum Importieren, Exportieren und Manipulieren von Daten und kann mit einer Vielzahl von Dateitypen und Datenformaten umgehen.
Ein Vorteil von R für die Datenverwaltung besteht darin, dass Sie Code schreiben können, um Datenbearbeitungsaufgaben zu automatisieren, was effizienter sein kann als die Verwendung von Point-and-Click-Programmen wie SPSS. So können Sie beispielsweise Code schreiben, um Aufgaben wie das Umbenennen von Variablen, das Umkodieren von Werten und das Zusammenführen von Datensätzen durchzuführen. Dies kann besonders nützlich sein, um große und komplexe Datensätze zu bearbeiten oder um sich wiederholende Aufgaben auszuführen.
R verfügt auch über eine Reihe von Paketen zur Datenbereinigung, wie z. B. tidyverse, das eine Reihe von Tools zur Datenmanipulation und -visualisierung bereitstellt. Diese Pakete erleichtern die Identifizierung und Korrektur von Fehlern in den Daten sowie die Neuformatierung und Umgestaltung der Daten nach Bedarf.
Im Vergleich dazu verfügen SPSS und Excel ebenfalls über Funktionen für die Datenverwaltung und -bereinigung, z. B. Sortier- und Filterwerkzeuge, Pivot-Tabellen und Funktionen zur Datenmanipulation. Allerdings sind diese Tools weniger flexibel und leistungsfähig als die in R verfügbaren, insbesondere bei der Handhabung großer und komplexer Datensätze oder bei der Automatisierung von Aufgaben.
Insgesamt ist R eine gute Wahl für das Datenmanagement und die Datenbereinigung, insbesondere für Benutzer, die bereit sind, sich mit der Programmierung vertraut zu machen und komplexe oder sich wiederholende Aufgaben durchführen müssen. Software wie SPSS und Excel sind jedoch möglicherweise für Nutzer, die mit diesen Programmen vertraut sind, der schnellere Weg, um mit kleineren oder einfacheren Datensätzen arbeiten.
Einführung: Syntax, Umgang mit Daten und Datensätzen
Den R Syntax (also die Programmiersprache) zu erlernen, ist die größte Herausforderung im Umgang mit R. Wie schwer es Ihnen fällt, den Syntax zu lernen, hängt von Ihrer bisherigen Programmiererfahrung und Ihren Zielen ab. Der beste Weg, die R Syntax zu lernen, besteht darin, das Schreiben und Ausführen von Code zu üben. Wir werden mit einfachen Skripten beginnen und uns dann schrittweise an komplexere Aufgaben herantasten. Bald wird es Ihnen ganz natürlich vorkommen, R Syntax zu schreiben. Los geht es mit ein paar Basics:
- R unterscheidet zwischen Groß- und Kleinschreibung, was bedeutet, dass x und X als unterschiedliche Variablen behandelt werden.
- R verwendet #, um den Beginn eines Kommentars anzuzeigen. Alles, was nach # in derselben Zeile steht, wird vom Programm ignoriert.
- R verwendet <- oder =, um Variablen Werte zuzuweisen. Zum Beispiel weisen x <- 5 und x = 5 der Variablen x den Wert 5 zu.
- R verwendet (), um Funktionsargumente anzugeben. Zum Beispiel berechnet mean(x) den Mittelwert der Werte in x.
- R verwendet [ ], um Elemente eines Vektors oder einer Matrix zu indizieren. Zum Beispiel ruft x[1] das erste Element von x ab.
- R verwendet [, ], um Elemente einer Matrix zu indizieren. Zum Beispiel ruft x[1, 2] das Element in der ersten Zeile und zweiten Spalte von x ab. Dazu gleich mehr.
Starten wir einfach mit einem Beispiel: ‘x <- 3 + 4’ speichert das Ergebnis des Terms ‘3+4’ in das Objekt x. Um das Ergebnis zu sehen, muss x angezeigt werden:
x <- 3 + 4
Hinweis: Objekte in R können Variablen, Datensätze (sog. dataframes) oder Funktionen sein. Dazu später mehr. In Ihrem Environment (rechts oben in RStudio) sollte jetzt das Objekt “x” zu sehen sein. Um in der Konsole zu prüfen, was im Speicher ist, können Sie Folgendes eingeben:
ls()
Nun löschen wir das Objekt x wieder:
rm(x)
In R arbeitet man in der Regel in einem Verzeichnis pro Projekt. Das Verzeichnis wählt man, indem man in RStudio im Fenster unten rechts (“Files”-Tab) in das gewünschte Verzeichnis navigiert und dort unter “More” “Set As Working Directory” auswählt. Sie können dieses auch mit dem Befehl setwd() festlegen z. B. setwd(“C:/Working Directory”))
So prüfen Sie das aktuelle Arbeitsverzeichnis in R:
getwd()
Hilfe erhalten:
– das Hilfesystem von R ist in RStudio unten rechts mit dem “Help”-Tab erreichbar
* Hilfe zu einem Stichwort gibt es mit ?? “Stichwort” z. B.: ?? “mean”
* Hilfe zu einem bekannten Befehl gibt es mit ?befehl(), z. B.:
?mean()
Schnelle Antworten gibt es auf Google – Da “R” jedoch schwer zu googlen ist, gibt es spezielle Suchmaschinen wie auf www.rseek.org, die nur R bezogene Ergebnisse liefern.
Dateien speichern und laden
Wenn man “File -> Save As…” auswählt, speichert man das aktuelle Skript (die aktuelle Syntax) als Textdatei mit der Endung .R.
Wenn man “Session -> Save Workspace As…” auswählt, wird der Inhalt des Workspace gespeichert.
Entsprechend lädt man den Workspace mit “Session -> Load Workspace”
Es lassen sich auch “Projekte” speichern, diese beinhalten alle Dateien (Skripte, Daten etc.) wie auch Einstellungen und sollten in einem getrennten Ordner angelegt werden.
Umgang mit Variablen
Wir werden zunächst eine einfache Variable erzeugen: Eine Zahlenfolge. Zahlenfolgen lassen sich auf unterschiedliche Weise erzeugen, z. B. mit der seq() Funktion und dem “:” – Befehl. So erzeuges Sie zum Beispiel die Zahlen 1 bis 15:
ID <- seq (1:15)
ID
## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Alternativ können Sie dies auch durch Angabe des Start- und Endpunkts, durch Komma getrennt, eingeben. Zusätzlich können Sie durch by die Schritte definieren:
ID2 <- seq(13, -1, by = -1)
ID2
## [1] 13 12 11 10 9 8 7 6 5 4 3 2 1 0 -1
Wenn Sie keine aufeinanderfolgenden Zahlen in der Variable anlegen wollen, dann können Sie beliebige Werte mit dem c() Befehl (für “Combine” – für Kombine) zusammenfügen:
Test <- c(1,3,5,7:10)
Test
## [1] 1 3 5 7 8 9 10
Eine weitere Variante ist der rep() Befehl (für Repeat – Wiederholen) – Dies kann man natürlich auch kombinieren:
GruppenNr <- c(rep(1, times = 3), rep(2, times = 3), rep(3, times = 3),
rep(4, times = 3), rep(5, times = 3))
GruppenNr
## [1] 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5
In diesem Video zeige ich, wie das in R funktioniert:
Übung
- Erzeugen Sie eine Variable “V1” mit den Zahlen: 18 bis 3 in 3er Schritten
- Erzeugen Sie eine Variable “V2” mit 10 mal der Zahlenfolge 1,2,3
Die Lösung zu dieser Übungsaufgabe gibt es im neuen Buch Statistik mit R & RStudio.
Variablentypen
Variablen können einen unterschiedlichen Typen haben. Die Wichtigsten sind:
- Numerische Variablen sind Variablen, die numerische Werte enthalten, wie z. B. Ganzzahlen oder Gleitkommazahlen. Diese Variablen können zur Durchführung von Berechnungen und statistischen Analysen verwendet werden.
- Character Variablen sind Variablen, die Zeichenwerte (d. h. Text) enthalten. Diese Variablen können zum Speichern von Namen, Beschriftungen und anderen Arten von nicht-numerischen Daten verwendet werden.
- Faktoren sind Variablen, die eine begrenzte Anzahl von Werten annehmen können, die als Ebenen bezeichnet werden. Faktoren werden verwendet, um kategorische Daten darzustellen, wie z. B. Geschlecht oder Augenfarbe.
Viele Analysen brauchen den richtigen Typ, um zu funktionieren. Beispielsweise muss eine Variable, die die Zugehörigkeit zu einer Gruppe numerisch angibt, vom Typ “factor” sein.
Schauen wir uns zunächst den Variablentyp mit der class() Funktion an.
class(GruppenNr)
## [1] "numeric"
Diese Variable sollte eigentlich ein Faktor sein. Nun ändern wir auf den korrekten Variablen-Typ:
GruppenNr <- factor(GruppenNr)
class(GruppenNr)
## [1] "factor"
Schauen Sie sich nun auch den Variableninhalt nochmal an:
GruppenNr
## [1] 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5
## Levels: 1 2 3 4 5
Wie Sie sehen, werden nun unter den Werten die Faktorstufen (sog. Levels) mit angegeben, also die Ausprägungen, die in den Daten vorkommen. Wir können den Faktorstufen auch Labels geben (anders als in SPSS werden diese dann auch als Werte angezeigt). Dies geht mit dem zusätzlichen Befehl labels.
GruppenNr <- factor(GruppenNr, labels=c("Gruppe1","Gruppe2","Gruppe3","Gruppe4","Gruppe5"))
Schauen Sie sich nun auch den Variableninhalt nochmal an:
GruppenNr
## [1] Gruppe1 Gruppe1 Gruppe1 Gruppe2 Gruppe2 Gruppe2 Gruppe3 Gruppe3
## [9] Gruppe3 Gruppe4 Gruppe4 Gruppe4 Gruppe5 Gruppe5 Gruppe5
## Levels: Gruppe1 Gruppe2 Gruppe3 Gruppe4 Gruppe5
Um die Anzahl der Einträge einer Variable zu sehen, benutzt man die length() Funktion:
length(GruppenNr)
## [1] 15
Die Faktorstufen eines Faktors erhält man mit levels():
levels(GruppenNr)
## [1] "Gruppe1" "Gruppe2" "Gruppe3" "Gruppe4" "Gruppe5"
Eine kurze Zusammenfassung einer Variablen mit den wichtigsten deskriptiven Statistiken gibt die summary() Funktion, deren Ausgabe sich danach unterscheidet, von welchem Typ die Variable ist:
Mit Faktor wird eine Häufigkeitstabelle ausgegeben:
summary(GruppenNr)
## Gruppe1 Gruppe2 Gruppe3 Gruppe4 Gruppe5
## 3 3 3 3 3
Mit numerischer Variable wird das Minimum, das erste Quartil, der Median, der Mittelwert, das dritte Quartil und der Höchstwert für die Variable ausgegeben:
summary(ID2)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -1.0 2.5 6.0 6.0 9.5 13.0
Datensätze (Dataframes) erzeugen
In der Programmiersprache R ist ein Dataframe eine Tabelle mit Daten, die in Zeilen und Spalten organisiert ist. Dataframes sind wichtig, weil sie es ermöglichen, große Datenmengen strukturiert und übersichtlich zu speichern und zu bearbeiten. Sie sind eine grundlegende Datenstruktur in R und werden häufig in der statistischen Analyse, Datenmanipulation und Datenvisualisierung verwendet.
Dataframes haben mehrere Vorteile gegenüber anderen Datenstrukturen in R, wie z. B. Matrizen und Listen. Zum Beispiel können Dataframes Daten verschiedener Typen (z. B. numerisch, zeichenweise, logisch) in derselben Tabelle speichern, während Matrizen nur Daten eines einzigen Typs speichern können. Dataframes verfügen außerdem über eine Vielzahl von Funktionen und Methoden zur Manipulation und Analyse der Daten, was sie zu einem leistungsstarken und flexiblen Werkzeug für die Arbeit mit Daten in R macht.
Wir erzeugen nun aus den eben erstellten Variablen einen Dataframe. Achten Sie darauf, dass alle drei Variablen (ID, ID2 und GruppenNr) auch in Ihrem “Global Environment” (Kasten rechts oben) sind, sonst erhalten Sie eine Fehlermeldung.
Datensatz <- data.frame(ID = ID,ID2 = ID2,GruppenNr = GruppenNr)
Nun haben wir einen kleinen Datensatz mit 15 Personen, die in fünf Dreiergruppen getestet wurden. Wir können nun noch das Geschlecht als Variable ergänzen. Die Notation für eine Variable in einem Datensatz ist dabei immer Datensatz$Variable
Datensatz$Geschlecht <- c("w", rep(c("w", "m"), times = 7))
Jetzt würden wir normalerweise noch weitere Daten ergänzen, wir können aber auch R bitten, für uns Zufallszahlen zu generieren, mit denen wir arbeiten können. Dazu nutzen wir die rnorm Funktion, um normierte Zufallszahlen zu generieren.
Datensatz$Messwert <- rnorm(15)
Nun können wir uns den fertigen Datensatz ansehen:
Datensatz
Alternativ können wir uns den Datensatz auch als eigene Tabelle (vergleichbar Excel oder SPSS) anzeigen lassen:
View(Datensatz)
Hier sieht alles schon sehr gewohnt aus (zumindest wenn man Excel oder SPSS gewohnt ist), man kann jedoch nichts bearbeiten. Hierfür gibt es in R jedoch den Dateneditor, den man mit edit() oder fix() startet. fix speichert die Änderungen automatisch. Bei edit muss man die Änderungen einem Objekt zuweisen.
fix(Datensatz)
Sie können eine Variable in einem Datensatz auch jederzeit löschen:
Datensatz$ID2 <- NULL
Die Variablen liegen jetzt noch doppelt im Speicher: einmal im Datensatz und einmal einzeln. Die einzelnen Variablen können wir nun auch löschen, wenn Sie es ordentlich mögen.
rm(ID, ID2, GruppenNr)
Wenn Sie einen neuen Datensatz erzeugt oder importiert haben, sollten Sie sich erst eine Übersicht über die Struktur des Objektes machen. Hier hilft Ihnen die str Funktion. Wenn Sie str() für ein Objekt aufrufen, wird eine Zusammenfassung des Objektinhalts zurückgegeben, einschließlich der Klasse des Objekts, der Länge des Objekts und der Namen und Abmessungen aller Komponenten des Objekts (z. B. Elemente einer Liste, Spalten eines Dataframes).
str(Datensatz)
## 'data.frame': 15 obs. of 4 variables:
## $ ID : num 1 2 3 4 5 6 7 8 9 10 ...
## $ GruppenNr : Factor w/ 5 levels "Gruppe1","Gruppe2",..: 1 1 1 2 2 2 3 3 3 4 ...
## $ Geschlecht: chr "w" "w" "m" "w" ...
## $ Messwert : num 1.3598 0.6062 -0.0418 0.1445 0.4705 ...
In diesem Video zeige ich, wie das in R funktioniert:
Umgang mit Datensätzen
Datensätze bestehen aus Zeilen (Fällen) und Spalten (Variablen). Mit der sog. Index-Notation in eckiger Klammer können einzelne Elemente (also eine Variable oder ein Wert) in einem Datensatz ausgewählt werden. Zeilen und Spalten eines Datensatzes können dabei wie folgt ausgelesen werden:
- Zeile:
Datensatz[1,]
## ID GruppenNr Geschlecht Messwert
## 1 1 Gruppe1 w 1.359812
- Spalte:
Datensatz[,1]
## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Wert der 1. Zeile in der 1. Spalte:
Datensatz[1,1]
## [1] 1
Fälle 1, 3 und 5:
Datensatz[c(1,3,5),]
## ID GruppenNr Geschlecht Messwert
## 1 1 Gruppe1 w 1.35981250
## 3 3 Gruppe1 m -0.04182047
## 5 5 Gruppe2 m 0.47045845
Datensätze sortieren
Datensatz nach der Variable ID aufsteigend sortiert anzeigen:
Datensatz[order(Datensatz$Messwert),]
## ID GruppenNr Geschlecht Messwert
## 8 8 Gruppe3 w -1.32590662
## 11 11 Gruppe4 m -0.28081031
## 3 3 Gruppe1 m -0.04182047
## 7 7 Gruppe3 m 0.06276210
## 14 14 Gruppe5 w 0.08925779
## 4 4 Gruppe2 w 0.14447396
## 9 9 Gruppe3 m 0.22214144
## 5 5 Gruppe2 m 0.47045845
## 2 2 Gruppe1 w 0.60618251
## 10 10 Gruppe4 w 0.66741066
## 13 13 Gruppe5 m 1.28546663
## 1 1 Gruppe1 w 1.35981250
## 15 15 Gruppe5 m 1.57101525
## 12 12 Gruppe4 w 1.67051430
## 6 6 Gruppe2 w 2.12952399
Dies verändert den Datensatz jedoch nicht dauerhaft. Wenn Sie sich den Datensatz jetzt noch mal neu anschauen sehen Sie, dass die Spalten nach wie vor gleich sortiert sind.
Erst wenn man den Datensatz mit dem neu sortierten Datensatz überschreibt, verändert dieser sich dauerhaft:
Datensatz <- Datensatz[order(Datensatz$Messwert),]
Datensatz
## ID GruppenNr Geschlecht Messwert
## 8 8 Gruppe3 w -1.32590662
## 11 11 Gruppe4 m -0.28081031
## 3 3 Gruppe1 m -0.04182047
## 7 7 Gruppe3 m 0.06276210
## 14 14 Gruppe5 w 0.08925779
## 4 4 Gruppe2 w 0.14447396
## 9 9 Gruppe3 m 0.22214144
## 5 5 Gruppe2 m 0.47045845
## 2 2 Gruppe1 w 0.60618251
## 10 10 Gruppe4 w 0.66741066
## 13 13 Gruppe5 m 1.28546663
## 1 1 Gruppe1 w 1.35981250
## 15 15 Gruppe5 m 1.57101525
## 12 12 Gruppe4 w 1.67051430
## 6 6 Gruppe2 w 2.12952399
Wir sortieren ihn wieder zurück:
Datensatz <- Datensatz[order(Datensatz$ID),]
Umgang mit Datensätzen: Fallauswahl
R verfügt über eine breite Palette von Operatoren zur Durchführung von Operationen mit Objekten wie Vektoren, Matrizen und Datenrahmen. Im Folgenden finden Sie eine Liste der wichtigsten Operatoren in R:
- Arithmetische Operatoren: Diese Operatoren führen grundlegende arithmetische Operationen durch, wie z. B. Addition (+), Subtraktion (-), Multiplikation (*) und Division (/). Sie können verwendet werden, um Berechnungen mit numerischen Objekten, wie Vektoren und Matrizen, durchzuführen.
- Vergleichsoperatoren: Diese Operatoren vergleichen zwei Objekte und geben einen logischen Wert (TRUE oder FALSE) zurück. Zu den Vergleichsoperatoren in R gehören gleich (==), nicht gleich (!=), kleiner als (<), größer als (>), kleiner oder gleich (<=) und größer oder gleich (>=).
- Logische Operatoren: Diese Operatoren führen logische Operationen mit logischen Objekten durch (d. h. TRUE oder FALSE). Zu den logischen Operatoren in R gehören und (&&), oder (||) und nicht (!).
Mit den letzen beiden Arten von Operatoren wollen wir uns nun kurz auseinandersetzen. Die Operatoren == (ist gleich), != (ungleich), >=, (grösser gleich), <= (kleiner gleich) sowie | (oder) und & (und) vergleichen JEDEN Wert einer Variable mit dem Vergleichsobjekt und liefern für jeden Vergleich TRUE oder FALSE zurück. Machen wir ein einfaches Beispiel.
Alle weiblichen:
Datensatz$Geschlecht == "w"
## [1] TRUE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE
## [11] FALSE TRUE FALSE TRUE FALSE
Alle nicht männlichen:
Datensatz$Geschlecht != "m"
## [1] TRUE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE
## [11] FALSE TRUE FALSE TRUE FALSE
Das ist sehr nützlich, weil man so Fälle anderer Variablen auswählen kann, die eine Bedingung erfüllen. Zum Beispiel alle Fälle von Variable A, bei denen das Geschlecht “w” ist:
Datensatz$Messwert[Datensatz$Geschlecht == "w"]
## [1] 1.35981250 0.60618251 0.14447396 2.12952399 -1.32590662
## [6] 0.66741066 1.67051430 0.08925779
oder Sie können den Mittelwert der weiblichen Personen in einer neuen Variable speichern:
x <- mean(Datensatz$Messwert[Datensatz$Geschlecht == "m"])
x
## [1] 0.4698876
Diese beiden Ausdrücke könnte man bspw. mit einem t-Test vergleichen
(dazu später mehr).
In diesem Video zeige ich, wie das in R funktioniert:
Übung
- Wählen Sie die Variable “Messwert” aus dem Datensatz aus. Verwenden Sie dafür einmal die Dollar-Notation($) und einmal die Index-Notation (eckige Klammern)
- Lassen Sie sich den Messwert für die Person mit ID = 9 ausgeben.
- Lassen Sie sich die Messwerte für alle Personen der Gruppe 3 ausgeben
Die Lösung zu dieser Übungsaufgabe gibt es im neuen Buch Statistik mit R & RStudio.
Datensätze im Long- und im Wide-Format
Grundsätzlich können Daten im “Wide” und im “Long” Format vorliegen. R kann gundsätzlich mit beidem arbeiten (anders als SPSS), jedoch verlangen bestimmte R Funktionen, dass die Daten in einem bestimmten Format vorliegen. Wir müssen sie daher transformieren.
Die Daten in ‘Datensatz’ liegen im Wide-Format vor, d. h. jede Variable hat eine neue Spalte (wie in SPSS)
Nehmen wir z. B. an, wir messen die Klausurnote in Statistik von 6 Studierenden ohne Tutorium (Gruppe 1) und 6 Studierenden mit Tutorium (Gruppe 2), um festzustellen, ob das Tutorium sich positiv auf die Note auswirkt
Die Daten liegen wie folgt vor:
Gruppe1 <- c(2.2,1.7,3.3,2.3,1.7,2)
Gruppe2 <- c(2.7,1.7,2,3.3,1.7,2)
Noten <- data.frame(Gruppe1,Gruppe2)
Schauen wir uns die Daten zunächst an (diese sind im Wide-Format)
Noten
## Gruppe1 Gruppe2
## 1 2.2 2.7
## 2 1.7 1.7
## 3 3.3 2.0
## 4 2.3 3.3
## 5 1.7 1.7
## 6 2.0 2.0
Jetzt wandeln wir die Daten in das Long-Format um. Hierzu nutzen wir die stack Funktion.
Noten.Long<-stack(Noten)
Noten.Long
## values ind
## 1 2.2 Gruppe1
## 2 1.7 Gruppe1
## 3 3.3 Gruppe1
## 4 2.3 Gruppe1
## 5 1.7 Gruppe1
## 6 2.0 Gruppe1
## 7 2.7 Gruppe2
## 8 1.7 Gruppe2
## 9 2.0 Gruppe2
## 10 3.3 Gruppe2
## 11 1.7 Gruppe2
## 12 2.0 Gruppe2
Das ganze geht natürlich auch umgekehrt, dazu nutzen wir die unstack Funktion:
Noten2<-unstack(Noten.Long)
Noten2
## Gruppe1 Gruppe2
## 1 2.2 2.7
## 2 1.7 1.7
## 3 3.3 2.0
## 4 2.3 3.3
## 5 1.7 1.7
## 6 2.0 2.0
‘Noten2’ ist nun wieder im Wide-Format also gleich dem Ursprungs-Datensatz ‘Noten’
In diesem Video zeige ich, wie das in R funktioniert:
Datensätze als csv speichern und laden
Wenn man den Arbeitsbereich wie zuvor beschrieben speichert (Workspace -> Save Workspace As…), werden auch alle im Arbeitsbereich enthaltenen Datensätze gespeichert.
Man kann Datensätze auch als einzelne Datei abspeichern, um sie mit anderen Programmen, z. B. Excel oder SPSS, zu öffnen. Grundsätzlich sollten Sie alle Daten, die Sie später noch benötigen, als eigene Datendatei speichern.
R speichert Datensätze als Textdateien, als tab-delimited (tabulator-getrennt) oder als csv-Datei (comma separated value). Leider gibt es unterschiedliche .csv Formate. Dies liegt daran, dass eine Trennung durch ein Komma im Deutschen zu Verwirrungen führen würde (Ist 2,2 nun eine Zahl oder zwei durch Komma getrennte Zahlen?). Daher nutzen wir in Deutschland ein csv-Format, dass Werte durch Strichpunkt abtrennt. Nur dieses können Sie mit einem auf Deutsch eingestellten Excel-Programm auch wieder öffen. Um eine solche Datei zu erzeugen, verwendet man den Befehl write.csv2().
write.csv2(Datensatz, file = "Datensatz.csv", row.names = FALSE)
Um die Datei dann wieder zu laden, geht man wie folgt vor:
Datensatz <- read.csv2("Datensatz.csv")
In diesem Video zeige ich, wie das in R funktioniert:
SPSS Datensätze einlesen
R benötigt eine Erweiterung, um SPSS-Daten einlesen zu können. Häufig verwendete Pakete, mit dem R SPSS-Dateien lesen kann, sind ‘foreign’ und ‘haven’. Beide sind bereits in der R-Installation vorhanden. Wenn Sie in R-Studio über das Menü “Import Dataset” SPSS auswählen, nutzen Sie das ‘haven’ Paket.
SPSS-Datensatz ‘WPStudi.sav’ mit Paket haven importieren (alternativ über Menü):
library(haven)
WPStudis_mit_haven <- read_sav("WPStudis.sav")
Betrachten Sie die Daten. Nutzen Sie dazu die Befehle View() bzw. str().
Wir wiederholen den Import mit dem Paket foreign
library(foreign)
WPStudis_mit_foreign <- read.spss(file="WPStudis.sav", to.data.frame = T)
Betrachten Sie die Daten wieder mit View bzw. str.
Haben Sie die Unterschiede bemerkt? Achten Sie z. B. auf die Variable Geschlecht. Haven erzeugt belabelte Vektoren, bei denen die Faktorstufen numerisch sind (z. B. “0” für weiblich), während foreign Faktoren mit den Labels als Faktorstufen erzeugt. Dies ist zwar besser, jedoch wird im foreign Paket z. B. die Variable Alter als Faktor erzeugt (sollte numerisch sein). In Summe haben alle Importfunktionen von SPSS ihre Stärken und Schwächen. Sie sollten daher grundsätzlich den importierten Datensatz nochmal von Hand prüfen und korrigieren.
In diesem Video zeige ich, wie das in R funktioniert:
Datenmanagement mit Tidyverse
Alternativ zu den bisher besprochenen Methoden können Datensätze oft auch bequemer mit Funktionen aus der tidyverse Familie bearbeitet werden. Zentral ist hierbei die standardisierte Notation: Datensatz <- Datensatz %>% Funktion. Der Befehl %>% wird “Pipe” genannt und drückt aus, dass alles was rechts davon steht auf alles links davon angewendet wird.
Wenn wir nun zum Beispiel in unserem Datensatz den Messwert mit 100 multiplizieren wollen, können wir Folgendes eingeben:
Datensatz$Messwert <- Datensatz$Messwert*100
Alternativ können wir mit der sogenannten “Pipe” aus tidyverse und dem tidyverse Funktion mutate() die Variablen verändern:
library(tidyverse)
Datensatz <- Datensatz %>% mutate(Messwert*100)
Letzeres klingt bei dieser einfachen Operation deutlich aufwändiger. Aber wie wir später bei verschachtelten Befehlen sehen werden, kann diese Notation von tidyverse auch durchaus Vorteile bringen.
Mit der mutate Funktion lassen sich auch einzelne Werte ändern oder der Variablentyp anpassen. Nehmen wir an, wir wollen aus “ID” einen Faktor machen:
Datensatz <- Datensatz %>% mutate(ID = factor(ID))
Ein weiterer hilfreicher Befehl für das Datenmanagement aus dem tidyverse ist rename. Hiermit lassen sich Variablen einfach umbennenen.
Nutzen wir dafür die Daten “Noten” von eben und bennenen die Gruppen 1 und 2 in Gruppe A und B um:
Noten <- Noten %>% rename(GruppeA = Gruppe1, GruppeB = Gruppe2)
In diesem Video zeige ich, wie das in R funktioniert:
Übung
- Nutzen Sie tidyverse, um im Datensatz die Messewerte jeweils zu halbieren.
- Nutzen Sie tidyverse, um im Datensatz die Variable “Geschlecht” in “Gender” umzubenennen.
Die Lösung zu dieser Übungsaufgabe gibt es im neuen Buch Statistik mit R & RStudio.
Es gibt noch viele weitere nützliche Funktionen bei tidyverse. Wer hier mehr erfahren möchte, wird unter: https://tidyverse.tidyverse.org/ fündig.