Data Frame (Tabellen)

Data Frame (Tabellen) in R

Ein Data Frame ist wie ein Excel-Tabellenblatt, also eine Tabelle mit Zeilen und Spalten. Ein typischer Data Frame sieht folgendermaßen aus:

Beispieltabelle mit Personen als Zeilen und Variablen wie Alter, Geschlecht, Gewicht, Einkommen, Bildung und Cholesterin als Spalten

Für die meisten Zwecke bilden Ihre Beobachtungen (Kunden, Patienten usw.) die Zeilen, und die Spalten beschreiben die Beobachtungen. Wenn Sie Patienten analysieren, ist jede Zeile ein Patient, und die Spalten beschreiben die Patienten, z. B. ihr Alter, ihr Geschlecht, ihren Blutdruck und ihre Erkrankungen. Ein Data Frame ist schlicht eine zweidimensionale Tabelle.

Die meisten Analysen in R werden mit Data Frames durchgeführt! Regressionsanalysen, Machine Learning, statistische Tests usw. erfolgen meist auf Data Frames.

Ein Data Frame wird mit der Funktion data.frame() erstellt.

Sie können einen Data Frame manuell erstellen, indem Sie mehrere Vektoren kombinieren. Die Vektoren werden zu Variablen (Spalten) im Data Frame. Erstellen wir einen Data Frame aus 3 Vektoren:

## Eine Zahlenfolge von 1 bis 15 erzeugen
variable1 <- 1:15

## 15 Zufallszahlen mit der Funktion rnorm() generieren
variable2 <- rnorm(15)

## Einen Zeichenvektor erstellen
variable3 <- c("A", "B", "W", "C", "D", "E", "A", "B", "C", "D", "E", "U", "O", "L", "E")

## Die Vektoren mit der Funktion data.frame() zu einem Data Frame kombinieren
my_data_frame <- data.frame(variable1, variable2, variable3)

## Das Ergebnis anzeigen
my_data_frame
##    variable1   variable2 variable3
## 1          1  2.62236519         A
## 2          2  0.97561295         B
## 3          3 -0.69898033         W
## 4          4 -0.84577095         C
## 5          5  0.14130709         D
## 6          6 -0.59023300         E
## 7          7 -1.28369028         A
## 8          8 -0.50507139         B
## 9          9 -0.03698647         C
## 10        10 -0.75165815         D
## 11        11 -1.26071226         E
## 12        12  1.30092947         U
## 13        13  0.37934736         O
## 14        14 -0.53221638         L
## 15        15 -1.65424529         E

Jede Spalte eines Data Frames enthält denselben Datentyp. Die Vektoren müssen gleich lang sein, andernfalls recycelt R Werte des kürzeren Objekts, um die fehlenden Zellen im Data Frame aufzufüllen. Das kann zu unerwarteten Ergebnissen führen, ist aber meist kein Problem, da man Daten in der Regel nach R importiert, und dann füllt R fehlende Werte nicht auf.

Prüfen wir die Struktur unseres Data Frames mit der Funktion str():

str(my_data_frame)
## 'data.frame':    15 obs. of  3 variables:
##  $ variable1: int  1 2 3 4 5 6 7 8 9 10 ...
##  $ variable2: num  2.622 0.976 -0.699 -0.846 0.141 ...
##  $ variable3: Factor w/ 9 levels "A","B","C","D",..: 1 2 9 3 4 5 1 2 3 4 ...

Die Funktion zeigt, dass variable1 eine ganze Zahl (Integer) ist, variable2 numerisch ist und variable3 ein Faktor mit 9 Stufen (Kategorien) ist. R hat den Zeichenvektor in einen Faktor umgewandelt! Das können Sie vermeiden, indem Sie in der Funktion data.frame() das Argument stringsAsFactors = FALSE verwenden:

my_data_frame <- data.frame(variable1, variable2, variable3, stringsAsFactors = FALSE)
str(my_data_frame)
## 'data.frame':    15 obs. of  3 variables:
##  $ variable1: int  1 2 3 4 5 6 7 8 9 10 ...
##  $ variable2: num  2.622 0.976 -0.699 -0.846 0.141 ...
##  $ variable3: chr  "A" "B" "W" "C" ...

Jetzt ist variable3 vom Typ chr, der Abkürzung für character.