交叉制表两个分类变量

时间:2016-11-22 18:27:35

标签: r matrix

如何找到以下两个变量的交叉列表?

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的所有不同级别。

1 个答案:

答案 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按字母顺序排列因子水平 (&#34; 10&#34;在#34; 6&#34之前出现)。

相关问题