Website-Icon Björn Walther

Variablen in R als Faktor definieren


In diesem Artikel zeige ich, wie man kategoriale Variablen in R korrekt beschriftet und als Faktoren definiert. Standardmäßig werden kategoriale Variablen mit einem „Integer, also einer Zahl, oder als „Character“, also als Wort in R hinterlegt – das führt aber häufig zu Problemen.

Was ist ein Faktor?

Das Konzept „Faktor“

Das Konzept des Faktors in R ist kein Hexenwerk, auch wenn es manchmal so wirkt. Wer aus der SPSS-Welt kommt, kann es sich wie Wertelabels vorstellen. Jeder numerischen Ausprägung einer kategorialen (oder auch ordinalen) Variable wird ein Label, also eine Beschriftung zugewiesen. Dies nennt man auch Faktorisierung.
 

Ein Beispiel

Die Variable Geschlecht kann man auf zwei Arten vorfinden, die eine Faktorisierung notwendig machen.

Die beiden linken Spalten der Tabelle unten stellen die beschriebenen Fälle dar. Sie werden im Faktor (rechte Spalte) kombiniert. Vereinfacht ausgedrückt: R arbeitet im Hintergrund mit Zahlen. Das Vergeben von Labels durch den Nutzer hilft diesen Zahlen Bedeutung beizumessen.

 

Geschlecht (Integer) Geschlecht (Character) Faktor Geschlecht
mit 2 Levels
0 Männlich 0 [Männlich]
1 Weiblich 1 [Weiblich]

 

Man kann sich vorstellen, dass man bei vielen Ausprägungen beim „Integer“ (1. Spalte) irgendwann den Überblick verliert. Gleichwohl ist beim „Character“ (2. Spalte) ein Rechnen in vielen Prozeduren nicht möglich. Daher die Kombination als Faktor mit Levels (3. Spalte).
 

„Character“ zu „Factor“

Nach einem Import aus CSV oder XLSX kann es vorkommen, dass der oben beschriebene Fall eintritt. Das sieht dann beispielsweise so aus, dass in meinem Falle die Variable Wahlstimme als „Character“ definiert ist, also lediglich Wörter enthält. Eine ANOVA könnte man damit nicht rechnen, hierzu braucht es entweder Integer (Zahl) oder direkt einen Faktor (Zahl mit Wertbeschriftung).

Zum Glück ist das der einfachere Fall und man kann direkt mit der as.factor()-Funktion arbeiten. Man kann auch eine neue Variable erstellen, ich überschreibe hier die bestehende Variable „Wahlstimme“ einfach, weil mir keine Informationen verloren gehen. R erstellt nun zu jeder Ausprägung, also jeder Partei eine interne Nummer, mit der fortan gerechnet wird. Bei Ausgaben wird allerdings die Beschriftung, also der Parteiname verwendet.


Wahlstimme <- as.factor(Wahlstimme)

 

„Integer“ zu „Factor“

Dies ist der etwas komplexere Fall, zumindest wenn es um den Schreibaufwand geht. Jeder Ziffer muss ein Wertelabel zugewiesen werden. Für meine Variable „Wohnsituation“ gibt es die Ausprägungen 0, 1 und 2. Deren Bedeutung sind Wohnung, Reihenhaus und Einfamilienhaus:

Ausprägung Bedeutung
0 Wohnung
1 Reihenhaus
2 Einfamilienhaus

 

Ich muss nun lediglich den Ausprägungen 0, 1 und 2 die Labels bzw. Beschriftungen Wohnung, Reihenhaus und Einfamilienhaus zuweisen. Am einfachsten ist dies mit den folgenden Zeilen.


Wohnsituation[Wohnsituation == "0"] 

Achtung: Der Datentyp ändert sich bei diesem Vorgehen von Integer zunächst zu Character. Das Vorgehen im Anschluss hierzu ist analog zu oben mit der Funktion as.factor():


Wohnsituation <- as.factor(Wohnsituation)

Im Dataframe ist die faktorisierte Variable nun als Datentyp "Factor w/ x levels" zu finden. x steht entsprechend für die Anzahl der Faktorstufen (Levels) bzw. Variablenausprägungen. Bei der Wohnsituation wären es beispielsweise 3 Levels.
 

Videotutorial

https://www.youtube.com/watch?v=x1qM2F3dh1Y/

 

Die mobile Version verlassen