Kurs

Faktoren sind Variablen in R, die kategoriale Werte aufnehmen und die Daten in Levels speichern. Hauptsächlich werden sie in der Datenanalyse, insbesondere in der Statistik, eingesetzt. Außerdem helfen sie, Redundanzen zu vermeiden und viel Speicherplatz zu sparen.
Hinweis: Eine kategoriale Variable nimmt Werte anhand von Bezeichnungen oder Namen an. Beispiel: Die Blutgruppe eines Menschen kann A, B, AB oder 0 sein.
Funktion factor
Verwendung: Kategorisiere Daten mit wenigen unterschiedlichen Ausprägungen.
Parameter: factor(v): v kann ein Vektor mit Werten sein.
Schauen wir uns ein Beispiel für einen Faktor in der Praxis an.
Im folgenden Code gibt es zwei kategoriale Ausprägungen, nämlich "Male" und "Female" – das sind die Faktorwerte.
gender <- c("Male","Female","Female","Male","Female")
Erstelle nun einen Faktor für das Geschlecht. Dazu verwenden wir 'factor(gender)' und speichern das Ergebnis in der Variable 'gender.factor'.
gender.factor <- factor(gender)
gender.factor
- Male
- Female
- Female
- Male
- Female
Levels:
- 'Female'
- 'Male'
Der obige Code liefert die folgende Ausgabe:
Male Female Female Male Female
Levels:
'Female' 'Male'
Wie du siehst, werden die Werte genauso ausgegeben wie im Eingangsvektor. Zusätzlich werden die 'Levels' – hier 'Female' und 'Male' – alphabetisch sortiert.
Struktur der factor-Funktion
Untersuchen wir die Struktur des Faktors mit 'str(gender.factor)' im folgenden Code.
str(gender.factor)
Factor w/ 2 levels "Female","Male": 2 1 1 2 1
Factor w/ 2 levels "Female","Male": 2 1 1 2 1
Die Ausgabe zeigt einen Faktor mit 2 Levels. factor wandelt den Zeichenkettenvektor 'gender' in einen Integer-Vektor um. "Female" ist das erste Level und wird als 1 codiert, "Male" ist das zweite Level und wird als 2 codiert.
Der Hauptgrund für die Codierung von Zeichenketten zu Zahlen: Kategorien wiederholen sich häufig, was als Text viel Speicher belegt. Ein Faktor reduziert diese Redundanz und spart Speicher.
Reihenfolge der Levels ändern
Ändern wir die Reihenfolge der Levels, sodass "Female" die 2 und "Male" die 1 wird.
Dafür erzeugen wir einen neuen Faktor und geben die Reihenfolge der Levels "Male" und "Female" explizit als Vektor an. Das Ergebnis speichern wir in der Variablen "gender.factor2".
gender.factor2 <- factor(gender,levels=c("Male","Female"))
gender.factor2
str(gender.factor2)
- Male
- Female
- Female
- Male
- Female
Levels:
- 'Male'
- 'Female'
Factor w/ 2 levels "Male","Female": 1 2 2 1 2
'gender.factor2' wird zusammen mit seiner Struktur über 'str(gender.factor2)' ausgegeben. Dabei siehst du folgende Änderungen:
Male Female Female Male Female
Levels:
'Male' 'Female'
Factor w/ 2 levels "Male","Female": 1 2 2 1 2
In dieser Ausgabe ist "Male" als 1 und "Female" als 2 codiert. Das ist umgekehrt zu 'gender.factor'.
Levels eines Faktors umbenennen
Benennen wir die Bezeichnungen um: Wir geben per 'levels' als ersten Parameter die vorhandenen Werte "Male" und "Female" an und per 'labels' als zweiten Parameter die neuen Beschriftungen "Gen_Male" bzw. "Gen_Female".
factor(gender,levels = c("Male","Female"),labels = c("Gen_Male","Gen_Female"))
- Gen_Male
- Gen_Female
- Gen_Female
- Gen_Male
- Gen_Female
Levels:
- 'Gen_Male'
- 'Gen_Female'
Gen_Male Gen_Female Gen_Female Gen_Male Gen_Female
Levels:
'Gen_Male' 'Gen_Female'
Hier wurden die Bezeichnungen von "Male" zu "Gen_Male" und von "Female" zu "Gen_Female" geändert.
Eine kategoriale Variable ordnen
Betrachten wir nun ordinale kategoriale Werte, bei denen die Reihenfolge zählt. Beispiel: Hosengrößen wie Large "L", Extra Large "XL" und Extra Extra Large "XXL" lassen sich aufsteigend anordnen. Im folgenden Code wird ein Zeichenkettenvektor mit "L", "XL" und "XXL" in 'pant' gespeichert. 'pant.factor' ist der Faktor mit aufsteigend sortierten Levels über 'levels = c("L", "XL", "XXL")' und 'ordered = TRUE', wodurch Vergleiche nach dieser Ordnung möglich werden.
pant <- c("XL","L","XL","XXL","L","XL")
pant.factor <- factor(pant,ordered = TRUE,levels = c("L","XL","XXL"))
pant.factor
pant.factor[1] > pant.factor[2]
- XL
- L
- XL
- XXL
- L
- XL
Levels:
- 'L'
- 'XL'
- 'XXL'
TRUE
XL L XL XXL L XL
Levels:'L'< 'XL' < 'XXL'
TRUE
Die Ausgabe zeigt zunächst alle Vektorwerte (XL, L, XL, XXL, L, XL) über 'pant.factor'. Die Levels 'L' < 'XL' < 'XXL' sind aufsteigend angeordnet und werden in der Konsole angezeigt. Zudem prüft 'pant.factor[1] > pant.factor[2]', ob "XL" größer als "L" ist – das Ergebnis ist TRUE.
Glückwunsch
Glückwunsch, du hast das Ende dieses Tutorials erreicht!
Du hast die factor()-Funktion in R kennengelernt – mit Beispiel, Struktur, geänderter Level-Reihenfolge, Umbenennen der Levels und dem Ordnen kategorialer Werte.
Wenn du mehr über R lernen möchtest, schau dir den Introduction to R Kurs von DataCamp an.
Sieh dir auch unser Tutorial zu Funktionen in R an.
