微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何在ftable中对列和行进行排序

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

current ftable

现在我想切换行/列,以便首先显示“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

感谢您的帮助!

解决方法

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

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' 列是 integer 类(读取数据后)。整数中的默认排序是从最低整数值到最高整数值,即 0 到 1。为了反转该顺序,我们转换为 factor,并在自定义顺序中指定 levels

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。