2016-11-22 58 views
-2

我如何找到以下兩個變量的交叉表?兩個分類變量的交叉表

X Y 
6 7 
8 8 
9 10 

我是這樣的:

X <- c(6,8,9) 
Y <- c(7,8,10) 
X <- factor(X) 
Y <- factor(Y)  

我發現XY用下面的命令頻率:

table(X) 
table(Y) 

,但我不知道如何使用它們。 我試圖用命令

table(X,Y) 

打印矩陣,但它不正是我想要的結果,這將是這樣的:

Y 6 7 8 9 10 
X 
6 0 1 0 0 0 
7 0 0 0 0 0 
8 0 0 1 0 0 
9 0 0 0 0 1 
10 0 0 0 0 0 

數字6,7,8,9, 10都是XY的不同等級。

+0

目前還不清楚你想要什麼;能否請你提供一個例子,說明上面的'X'和'Y'向量的輸出結果。 'table(X,Y)'確實產生了一個3x3的網格,儘管不是'矩陣'。你可以使用'unclass(table(X,Y))'將它作爲一個矩陣。 – Barker

+0

我編輯了我的帖子,檢查它:) –

回答

0

您需要告訴table有沒有包含在每個變量中的級別。 (製作XY考慮多項因素,過早實際上導致更多的問題比它的價值。)

X <- c(6,8,9) 
Y <- c(7,8,10) 
vals <- c(X,Y) 
levs <- min(vals):max(vals) 
table(factor(X,levs),factor(Y,levs)) 

如果你開始的因素,你可以使用levs <- sort(union(levels(X),levels(Y)))。在這種情況下,這會很煩人,因爲R按字母順序排列因子水平(「10」在「6」之前)。