如何对 ftable 中的列和行进行排序

How to order columns and rows in ftable

我想在 R 中对 ftable 的行和列重新排序。目前 table 如下所示:

现在我想切换 rows/columns,以便首先显示“1”的计数,然后显示“0”的计数。 例如,行“antib”应该切换,以便计数为“1”的行显示在计数为“0”的上方。

有办法吗?

我使用了以下代码和数据:

library("tidyverse")

csectionrisks <- read.table("kaiserschnitt.raw",header=TRUE)
csectionrisks %>% mutate_if(is.character,as.numeric)

glimpse(csectionrisks)
attach(csectionrisks)

ftable(xtabs(n~antib+risk+nplan+infbin), row.vars=1:2)

我使用的数据集可以在这里下载: Dataset

感谢您的帮助!

一种方法是在自定义顺序中使用 levels 转换为 factor

library(dplyr)
csectionrisks1 <- csectionrisks %>% 
   mutate(across(c(infbin, nplan, risk, antib), factor, levels = c(1, 0))) 
ftable(xtabs(n~antib+risk+nplan+infbin, data = csectionrisks1), row.vars=1:2)

-输出

#     nplan   1     0   
#           infbin  1  0  1  0
#antib risk                   
#1     1           11 87  1 17
#      0            0  0  0  2
#0     1           23  3 28 30
#      0            0  9  8 32

'infbin'、'nplan'、'risk'、'antib'列为integerclass(读取数据后)。整数的默认排序是从最低整数值到最高整数值,即 0 到 1。要反转该顺序,我们转换为 factor 并在自定义顺序

中指定 levels