#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.