2016-10-21 2 views
2

Ich habe eine Tabelle mit über 200 kategorischen Variablen. Beispiel:Frequenzkreuztabelle in R für kategoriale Variablen

Cat1 Cat2 Cat3 
A B A 
B A A 
A C A 
A B A 

Ich möchte Häufigkeit (Anzahl der Male) jede Kategorie im Dataset angezeigt bekommen. Etwas wie folgt aus:

  • A 8
  • B 3 ..

ich sehr neu für R und versucht, eine for-Schleife das Ergebnis zu erhalten. Ich bin mir sicher, dass es dafür bessere Möglichkeiten gibt. Kannst du mir bitte dabei helfen?

+0

Ist "A" in "Cat1" gleich "A" in "Cat2", zB? Dh, wollen Sie "A" 's in jeder Variablen oder über alle Variablen zählen? – gung

+0

Vielen Dank für die Bearbeitung. Ja bitte migrieren Sie es. –

+0

Ja "A" in cat1 ist gleich wie "A" in anderen Variablen. –

Antwort

1

Im Allgemeinen ist die bequemste Funktion zu zählen, wie viele Zeichen Sie von jeder Art haben, ist ?table:

d <- read.table(text="Cat1 Cat2 Cat3 
A B A 
B A A 
A C A 
A B A", header=T) 
table(d$Cat1) 
# A B 
# 3 1 

Der bequemste Weg table() für jede kategoriale Variable in einem Datensatz auszuführen ist ?summary.data.frame zu verwenden:

summary(d) 
# Cat1 Cat2 Cat3 
# A:3 A:1 A:4 
# B:1 B:2   
#  C:1   

auf der anderen Seite, wenn Sie einen Tisch bekommen, die alle kategorischen Variablen kollabiert über, können Sie table() mit ?unlist verwenden:

table(unlist(d)) 
# A B C 
# 8 3 1 

Um zu verstehen, was dort passiert, ist die Sache zu erkennen, dass in R eine besondere Art von Liste ein Datenrahmen ist: vgl jede Variable ein Vektor ist und der Datenrahmen ist eine Liste von Vektoren gleicher Länge (, here). Die unlist()-Funktion wandelt diese in einen langen Vektor um, der vom ersten bis zum letzten verkettet ist. Beachten Sie, dass wenn Sie einige nicht kategoriale Variablen eingemischt haben, diese mit etwas wie table(unlist(d[,c(<variables to use>)])) ausgeschlossen werden müssen.

Verwandte Themen