2016-11-11 7 views
1
> table(X = c(1, 0, 1, 0, 1), Y = c(1, 1, 1)) 
Error in table(X = c(1, 0, 1, 0, 1), Y = c(1, 1, 1)) : 
    all arguments must have the same length 

Ich habe diesen Fehler beim Versuch, einen table Befehl auszuführen. Ich sehe jedoch nicht, warum solch ein Tisch nicht gebaut werden kann.R: Argumente im Tabellenbefehl müssen alle die gleiche Länge haben

Gibt es eine andere Möglichkeit, eine Tabelle mit kategorischen Daten zu erstellen, bei der die Vektoren nicht die gleiche Länge haben?

Antwort

2

table erfordert buchstäblich zwei Variablen der gleichen Länge tabelliert werden. Dies ist das gleiche wie ähnliche Frequenz-/Pivot-/Tabellenfunktionen in SAS, SPSS, Stata, Excel usw. usw. Sie benötigen zwei Spalten - eine mit der Quelle (X oder Y) und eine mit dem Wert (0 oder 1).

X <- c(1, 0, 1, 0, 1) 
Y <- c(1, 1, 1) 
source <- rep(c("X","Y"), c(length(X), length(Y))) 
value <- c(X,Y) 

table(source,value) 
#  value 
#source 0 1 
#  X 2 3 
#  Y 0 3 

Es gibt kniffligere Möglichkeiten, dies zu tun, aber das ist wahrscheinlich die einfachste. Eine Alternative, die in den Sinn kommt, ist:

table(stack(list(X=X,Y=Y))) 
#or 
table(stack(mget(c("X","Y")))) 
Verwandte Themen