在R中创建一个具有已定义级别的表

时间:2016-01-02 11:25:31

标签: r

我有一个实际值向量(因子变量)a a a b b c c b c b c c ...

我有一个预测值a b b a ...

的向量

我想创建一个混淆矩阵t = table (actual, predict)

如果我打印t,它将如下所示:

   a b c
a  4 3 1
b 1  5 2
c  3 1 8

但是,我想将其打印为

    b c a
b   8 2 3
c   2 3 4
a   1 2 3

(即,我想更改行和列的顺序,但将其保留为混淆矩阵)

我怎么能在R?中做到这一点?

1 个答案:

答案 0 :(得分:3)

我们可以将列更改/转换为factor指定的级别。

actual <- factor(actual, levels=c('b', 'c', 'a'))
predict <- factor( predict, levels = c('b', 'c', 'a'))
table(actual, predict)
#        predict
#actual b c a
#     b 0 1 4
#     c 3 2 2
#     a 2 3 3

或者我们可以使用row/column索引

table(actual, predict)[c('b','c','a'), c('b', 'c', 'a')]

数据

 set.seed(24)
 actual <- sample(letters[1:3], 20, replace=TRUE)
 predict <- sample(letters[1:3], 20, replace=TRUE)