0

我想重新排序 cont.table 的因素

test.a <- c(rep(1,20),rep(0,40))
test.b <- c(rep(1,25),rep(0,35))

cont.table <- addmargins(table(test.a, test.b))

    test.b
test.a  0  1 Sum
   0   35  5  40
   1    0 20  20
   Sum 35 25  60

我希望能够对因子 0 和 1 进行排序。我想要的结果是这样

     1  0 Sum
1   20  0  20
0    5 35  40
Sum 25 35  60

我是这样做的,但是我丢失了我需要的类表

> tbl <- as.data.frame.matrix(addmargins(table(test.a, test.b)))
> tbl2 <- cbind(tbl[2],tbl[1],tbl[3])
> tblfinal <- rbind(tbl2[2,],tbl2[1,],tbl2[3,])

> as.table(tblfinal)
Error in as.table.default(tblfinal) : cannot coerce to a table

有没有可能的方法?越简单越好

4

2 回答 2

3

使您的 test.x 对象因素具有定义的顺序,然后表格等将被适当地排序。例如:

test.a <- factor(test.a,levels=c(1,0))
test.b <- factor(test.b,levels=c(1,0))
addmargins(table(test.a,test.b))

#      test.b
#test.a  1  0 Sum
#   1   20  0  20
#   0    5 35  40
#   Sum 25 35  60
于 2017-07-26T01:15:13.837 回答
1

您可以通过 col/row 名称对其重新排序:

cust_name <- c('1', '0', 'Sum')
cont.table[cust_name, cust_name]

      test.b
test.a  1  0 Sum
   1   20  0  20
   0    5 35  40
   Sum 25 35  60
于 2017-07-26T00:46:30.197 回答