#datascience
Datenanalyse mit R
Online-Tutorial für Anfänger
5.1. Vorbemerkung
In diesem Kapitel werden anhand des frei verfügbaren Datensatzes mtcars mögliche erste Schritte beim ersten Umgang mit Datensätzen erläutert. Nachdem der Datensatz in R eingelesen wurde, liegt der Fokus auf der Auswahl von Variablen und Fällen sowie der Bildung von Teilgruppen. Hiernach wird gezeigt, wie der Datensatz verändert werden kann, bspw. indem Variablen oder Fälle neu hinzugefügt oder entfernt werden. Um erste Analysen durchzuführen, wird schließlich gezeigt, wie Variablen sortiert und gruppiert werden können.
5.2. Laden und Kennenlernen des Datensatzes
Um den Umgang mit Datensätzen zu veranschaulichen, wird in diesem Kapitel der Datensatz "mtcars" genutzt. Ebendieser ist in der grundlegenden Installation von R [innerhalb des Basispakets "The R Datasets Package"] bereits vorhanden. Um den Datensatz zu laden bzw. einzulesen, ist folgender Befehl auszuführen:
data(mtcars)
Erste Informationen zum Datensatz und zu den enthaltenen Variablen erhält man mittels der Funktionen help() und View().
help(mtcars)
View(mtcars)
5.3. Auswählen von Variablen und Fällen
Auswahl von Variablen [spaltenweise]:
Falls eine Variable [hier: Eigenschaft eines Automodells], bspw. Horsepower [hp] in Spalte 4, von besonderem Interesse für die Analyse ist, kann man diese separat auswählen und die Werte anzeigen lassen:
mtcars$hp
oder per Befehl:
mtcars[,4]
Auswahl eines Falls [zeilenweise]:
Falls die Auswahl eines bestimmten Falls [hier: Automodell], bspw. Mercedes C280 in Zeile 11, gewünscht ist, nutzt man folgenden Befehl:
mtcars[11,]
Auswahl von bestimmten Fällen mittels Wildcard:
Auch die Auswahl von bestimmten Fällen, bspw. nur Automodelle mit Automatikschaltung [Variable "am", Spalte 9, hat den Wert 1], mittels "Wildcard" ist möglich. Hierfür kann u. a. die Funktion grep() genutzt werden. Beispiel:
mtcars[grep("1",mtcars$am),]
Wichtiger Hinweis:
Das Komma am Schluss ist notwendig, da wir bestimmte Fälle [Zeilen] auswählen wollen. Bei der Auswahl von Variablen [Spalten] stände das Komma vorne, vgl. folgende Logik:
datensatzname [Zeilenbedingung , Spaltenbedingung]
5.4. Bildung von Teilgruppen
Subset-Befehl:
Um bspw. herauszufinden, ob Autos mit Automatik-Schaltung mehr PS als Autos mit Gangschaltung aufweisen, muss man Teilgruppen bilden. Die Funktion subset() ist eine Möglichkeit hierzu:
subset(mtcars$hp,mtcars$am=="1")
subset(mtcars$hp,mtcars$am=="0")
Für den Vergleich der PS-Werte kann man bspw. den arithmetischen Mittelwert beider Teilgruppen gegenüberstellen:
mean(subset(mtcars$hp,mtcars$am=="1"))
126.8462
mean(subset(mtcars$hp,mtcars$am=="0"))
160.2632
Der Vergleich zeigt, dass Autos mit Automatikgetriebe [am==1] im Mittelwert weniger PS haben. Zumindest für einen Laien mag das eine neue Erkenntnis sein.
Definition von "handlichen" Gruppen:
Um weitere Berechnungen "handlicher" zu machen, kann man bspw. auch die Teilgruppen "automatik" und "schalt" definieren:
hp_automatik <- subset(mtcars$hp,mtcars$am=="1")
hp_schalt <- subset(mtcars$hp,mtcars$am=="0")
Bsp. Berechnung Mittelwert
mean(hp_automatik)
126.8462
mean(hp_schalt)
160.2632
Bsp. Berechnung Maximaler Wert
max(hp_automatik)
335
max(hp_schalt)
245
Alternative: Bedingte Referenzierung
Die Auswahl einer Teilgruppe kann auch mittels bedingter Referenzierung erfolgen, d. h. es werden nur bestimmte Fälle [Zeilen] und Variablen [Spalten] ausgewählt.
Bsp. Nur Autos mit Automatikgetriebe
mtcars[mtcars$am=="1",]
Bsp. Nur Autos mit Automatikgetriebe mit PS größer als 200
mtcars[(mtcars$am=="1")&(mtcars$hp>200),]
5.5. Hinzufügen neuer Variablen und Fälle
Hinzufügen neuer Variablen [Spalten]:
Falls man eine neue Variable [Spalte] zu dem bestehenden Datensatz hinzufügen möchte, kann man die Funktion cbind() nutzen. Das c in cbind steht für column, d. h. Spalte.
Beispiel: 100m Rennen
Variable qsec, Spalte 7, misst die Zeit für eine US-amerikanische Viertelmeile [ca. 402 Meter]. Wir wollen die Zeit für 100 Meter als neue Variable msec abspeichern und mit dem Datensatz "verbinden".
mtcars <- cbind (mtcars, msec= mtcars$qsec/402.336*100)
Alternativ kann man auch zwei Schritte daraus machen:
1. Definition neuer Variable:
msec <- mtcars$qsec/402.336*100
2. Datensatz mtcars mit Variable verbinden
mtcars <- cbind(mtcars, msec)
Hinweis zur Wahl des Variablennamens: Bei der Wahl des Variablennamens sollten Leer- und Sonderzeichen vermieden werden, da sonst im Code mit zusätzlichen Anführungsstrichen gearbeitet werden muss.
Beispiel: "m sec"
mtcars <- cbind (mtcars, "m sec"= mtcars$qsec/402.336*100)
Hinzufügen neuer Fälle [Zeilen]:
Falls eine Vielzahl neuer Fälle hinzukommen soll, bietet sich ein Blick in Kapitel 3.3. "Import von Datensätzen in R" an. Einzelne Fälle können auch mittels Dateneditor hinzugefügt werden.
mtcars <- data.entry(mtcars)
Vorsicht mit rbind: Funktion list beachten
Hingegen ist es problematisch die Funktion rbind() zu nutzen, weil die Variablen des neuen Falls unterschiedliche Modi [Datentypen] haben können, die im Modus character übergeben werden. Der Datensatz wird zwar um den neuen Fall ergänzt, jedoch sind Berechnungen etc. nicht mehr möglich.
Die Lösung liefert die Funktion list(). Beispiel neuer Fall "Trabi" [Werte sind fiktiv]:
mtcars <- rbind(mtcars, list(20.0,6,165.0,110,3.90,2.620,16.46,0,1,4,4))
rownames(mtcars)[33]<-"Trabi"
5.6. Umbenennen und Löschen von Variablen
Die Variablennamen des Datensatzes sind als Vektor gespeichert und können per Funktion names() aufgerufen und umbenannt werden.
names(mtcars)
Beispiel: Umbennung der Variable Horsepower in PS:
names(mtcars)[names(mtcars)=="hp"] <- "PS"
Falls eine Variable gelöscht werden soll, bietet sich folgender Befehl an. Beispiel: Löschung von qsec
mtcars$qsec <- NULL
Falls mehrere Variablen gelöscht werden sollen, kann man folgenden Befehl nutzen.
Beispiel: Löschung der Variablen mpg [Spalte 1] und disp [Spalte 3]
mtcars <- mtcars[,-c(1,3)]
5.7. Sortieren und Gruppieren von Variablen
Sortieren von Variablen:
Die Sortierung nach einem beliebigen Kriterium und die Ausgabe desselbigen kann über die Funktion sort() erfolgen. Beispiel: Sortierung nach Reichweite [Variable "mpg", Spalte 1, zeigt Meilen pro US-Gallone]:
sort(mtcars$mpg)
Falls der gesamte Datensatz nach einen Kriterium sortiert und ausgegeben werden soll, hilft die Funktion order().
mtcars[order(mtcars$mpg), ]
Falls der gesamte Datensatz nach zwei Kriterien sortiert und ausgegeben werden soll, hilft die Funktion order(). Beispiel: Sortierung nach Reichweite ["mpg"] und Automatik-Gangschaltung ["am"].
mtcars[order(mtcars$am, mtcars$mpg), ]
Gruppierung von Variablen:
Falls zwei Teilgruppen miteinander verglichen werden sollen, bspw. hinsichtlich des Mittelwertes einer bestimmten Variablen, kann die Funktion tapply() eingesetzt werden. Beispiel: Mittlere Reichweite der Automodelle mit und ohne Automatik-Gangschaltung
tapply(mtcars$mpg,mtcars$am,mean)
0 1
17.14737 24.07857
Interpretation: Automodelle ohne bzw. mit Automatik-Gangschaltung haben eine mittlere Reichweite von 17 bzw. 24 Meilen pro US-Gallone.