r - 创建3路表: tabyl output sorting

标签 r janitor

我正在尝试创建一个三向 tabyl,并且正在努力按我想要的方式对列和行进行排序。这是示例:

library(janitor)
df <- data.frame(gender = c("f", "m", "m", "f", "m"),
                 age_group = factor(
                   c("35-45", "18-35", ">55", "45-55", ">55"), 
                   levels = c("18-35", "35-45", "45-55", ">55")),
                 bmi_group = factor(
                   c("18.5 - 25", "<18.5", "18.5 - 25", ">30", "25 - 30"),
                   levels = c("<18.5", "18.5 - 25", "25 - 30", ">30")),
                 stringsAsFactors = TRUE)


df %>%
  tabyl(bmi_group, age_group, gender, show_missing_levels = FALSE) %>%
  adorn_totals("row") %>%
  adorn_percentages("all") %>%
  adorn_pct_formatting(digits = 1) %>%
  adorn_ns %>%
  adorn_title

它给了我这个:

enter image description here

我不知道如何按因素级别对特定性别表中的条目进行排序。现在按字母顺序排序。

最佳答案

抓得好!这是 bug in the janitor package 。它被修复在 version 2.1.0 ,于 2021 年 1 月发布。上面相同的代码现在会产生按因子级别排序的列和行的输出:

$f
           age_group          
 bmi_group     35-45     45-55
 18.5 - 25 50.0% (1)  0.0% (0)
       >30  0.0% (0) 50.0% (1)
     Total 50.0% (1) 50.0% (1)

$m
           age_group          
 bmi_group     18-35       >55
     <18.5 33.3% (1)  0.0% (0)
 18.5 - 25  0.0% (0) 33.3% (1)
   25 - 30  0.0% (0) 33.3% (1)
     Total 33.3% (1) 66.7% (2)

关于r - 创建3路表: tabyl output sorting,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58083148/

相关文章:

删除 R 图形设备中的所有边距

r - 获取 Shiny DT 中单击的单元格旁边的单元格值

r - janitor::clean_names 可以仅用于数据框中的某些列吗?

r - 具有频率和百分比的双向列联表

r - 通过使用 group_split 和 group_map 对变量进行分组,使用 tabyl 进行制表

r - `predict.lm` 函数中的参数

r - 计算斐波那契数列

r - 捕获 R 输出并替换为 LaTeX 代码

r - 如何使用 R 中的 purrr 映射在 janitor::tabyl 中设置变量名称

r - tidyverse:一个变量与 data.frame 中所有其他变量的交叉表