Kreuztabellen in R erstellen

von | Zuletzt bearbeitet am: Sep 30, 2022 | Kreuztabelle, R

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:

  • Empfohlen: Nominal- und ordinalskalierte Variablen
  • Funktioniert auch: Intervallskalierte Variablen mit wenigen Ausprägungen
  • Ausprägungen können numerisch oder Text sein
  • Fehlende Werte werden automatisch ausgeschlossen

 

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"))
  • Die Befehle prop.c, prop.r, prop.t geben die relativen Spalten-, Zeilen- und Gesamttabellenhäufigkeiten aus. Da sie für eine einfache Kreuztabelle nicht benötigt werden, stelle ich sie auf = FALSE. Sollte dies jedoch gewünscht sein
  • prop.chisq führt den eben genannten Chi²-Test (auch Chi²-Unabhängigkeitstest) durch. Da dieser nicht benötigt wird, wird ebenfalls = FALSE angegeben
  • expected sind die erwarteten Häufigkeiten unter Bedingung stochastischer Unabhängigkeit – die sind nur im Rahmen eines Chi²-Tests interessant.
  • dnn ist die Beschriftung der Zeilen- bzw. Spaltenvariable. Ansonsten wird die Beschriftung aus der Variableneingabe in die Funktion mitsamt des Data Frames (z.B. bei mir data$Wahlstimme, data$Geschlecht) gebildet.

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

 

Hat dir der Beitrag geholfen?

Dann würde ich mich über eine kleine Spende freuen, die es mir erlaubt, weiterhin kostenfreie Inhalte zu veröffentlichen.
Alternativ kannst du über meinen Amazon Affiliate-Link einkaufen – ohne Zusatzkosten.

Vielen Dank und viel Erfolg!

Über mich

Björn Walther

Ein 💚 für Statistik & Datenanalyse

Excel Online-Kurs

YouTube-Kanal

Inhalt