Website-Icon Björn Walther

Kreuztabellen in R erstellen

Kreuztabellen zählen die Häufigkeiten für das gemeinsame Auftreten von zwei Merkmalen. Einfacher ausgedrückt, ich kann mit Kreuztabellen erkennen, wie oft zwei Variablenausprägungen in Kombination vorkommen.
Ein fiktives Datenbeispiel: Wie oft haben Männer und Frauen für verschiedene Parteien abgestimmt?


             | Wahlstimme 
  Geschlecht |         0 |         1 | Row Total | 
-------------|-----------|-----------|-----------|
         CDU |         7 |         4 |        11 | 
-------------|-----------|-----------|-----------|
         FDP |         4 |         7 |        11 | 
-------------|-----------|-----------|-----------|
       Grüne |         2 |         6 |         8 | 
-------------|-----------|-----------|-----------|
       Linke |         8 |         5 |        13 | 
-------------|-----------|-----------|-----------|
         SPD |         5 |         3 |         8 | 
-------------|-----------|-----------|-----------|
Column Total |        26 |        25 |        51 | 
-------------|-----------|-----------|-----------|

1 Voraussetzungen für Kreuztabellen in R

Oft vergessen wird, dass die Variablen nominal oder ordinal skaliert sein sollten. Dabei ist es egal, ob die Ausprägungen als Ziffern, Wörter oder direkt als Faktor hinterlegt sind. Mit metrischen/intervallskalierten Variablen klappt das gezeigte Vorgehen auch. Man sollte hierbei allerdings bedenken, dass die Tabelle größer wird, weil tendenziell eine höhere Anzahl an Ausprägungen existieren. Folglich wird die Kreuztabelle zudem auch unübersichtlicher. Sollte die Ausprägung einer oder beider Variablen einen fehlenden Wert aufweisen, wird dies beim gezeigten Vorgehen ignoriert bzw. diese Fälle ausgeschlossen.

Zusammengefasst:

 

2 Kreuztabelle mit Bordmitteln in R erstellen

Nach dem Einlesen von Daten in R kann direkt gestartet werden. Hierzu gibt es die xtabs()-Funktion in R. In sie sind die beiden Variablen (mitsamt Data Frame) wie folgt einzugeben: die Variable, die in den Zeilen stehen soll (hier: Sportnote), wird als erstes angegeben, die Spaltenvariable als zweites (hier: Geschlecht).


xtabs(~data$Sportnote+data$Geschlecht)

Im Anschluss erhält man eine sehr rudimentäre Kreuztabelle.

 
             data$Geschlecht
data$Sportnote 0 1
             1 2 4
             2 7 7
             3 4 7
             4 7 4
             5 4 3
             6 2 0

Die Lesart ist recht simpel. In der ersten Zeile (nicht fett gedruckt) steht die Sportnote 1 und dahinter mit 2 die Anzahl der Männer (mit 0 codiert) sowie die 4 für die Anzahl der Frauen (mit 1 codiert). Exemplarisch gibt es bei der Note 6 nur 2 Männer und keine Frau.

Allerdings ist diese Übersicht noch verbesserungswürdig bzw. nicht so ansehnlich, weswegen ich ein zweites Vorgehen zeige.
 

3 Kreuztabelle mit CrossTable in R erstellen

Die CrossTable()-Funktion ist Teil des “gmodels”-Pakets und wird wie folgt installiert und geladen:


install.packages("gmodels")
library(gmodels)

Anschließend werden die beiden Variablen mit Komma getrennt in die Funktion übergeben. Erneut gilt: Die zuerst genannte Variable wird in den Zeilen abgetragen, die zweite kommt in die Spalten. Da die CrossTable()-Funktion weitere Analysen ermöglicht und Ergebnisse ausgibt (u.a. Chi²-Test), sind ein paar zusätzliche Argumente anzugeben. Standardmäßig wird etwas mehr als benötigt ausgegeben.


CrossTable(data$Wahlstimme, data$Geschlecht, 
           prop.c = FALSE, prop.r = FALSE, prop.t = FALSE, prop.chisq = FALSE,
           expected = FALSE,
           dnn = c("Geschlecht", "Wahlstimme"))

Schließlich erhält man hierfür die nachfolgende Kreuztabelle, die eingangs schon gezeigt wurde:


             | Wahlstimme 
  Geschlecht |         0 |         1 | Row Total | 
-------------|-----------|-----------|-----------|
         CDU |         7 |         4 |        11 | 
-------------|-----------|-----------|-----------|
         FDP |         4 |         7 |        11 | 
-------------|-----------|-----------|-----------|
       Grüne |         2 |         6 |         8 | 
-------------|-----------|-----------|-----------|
       Linke |         8 |         5 |        13 | 
-------------|-----------|-----------|-----------|
         SPD |         5 |         3 |         8 | 
-------------|-----------|-----------|-----------|
Column Total |        26 |        25 |        51 | 
-------------|-----------|-----------|-----------|

4 Videotutorials

https://www.youtube.com/watch?v=H55Ad3zH5Qc https://www.youtube.com/watch?v=iqwxCJwPn3s

 

Die mobile Version verlassen