2016-11-22 110 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”之前)。