sjPlot::plot_xtab
— это полезный инструмент для быстрого создания сгруппированных графиков столбцов с метками количества и % на столбцах. Однако у меня возникла очень неприятная проблема с этим. plot_xtab
переупорядочивает и неправильно маркирует уровни интересующего меня фактора. Кажется, что происходит то, что он упорядочивает уровни по лексическому порядку, но затем неправильно маркирует их фактическими метками факторов в маркированном порядке. Это серьезная проблема, конечно. Вот воспроизводимый пример:
library(tidyverse)
library(forcats)
library(gtools)
library(sjPlot)
data("mtcars")
cars <- as_tibble(mtcars) %>%
mutate(carb_cat=case_when(carb <3~"Low", carb==3 | carb ==4~"Med", carb>4~"High"),
carb_cat=fct_relevel(carb_cat, "Low", "Med", "High"))
unique(cars$carb_cat)
cars$mpg_3 <- quantcut(cars$mpg, q=3)
plot_xtab(cars$mpg_3, cars$carb_cat, show.total = F)
Когда я наношу cars$carb_cat
на cars$mpg_3
, plot_xtab
переупорядочивает и неправильно обозначает уровни факторов. Если вы сравните значения на столбцах с приведенной ниже таблицей частот, вы заметите, что фактический уровень «Высокий» помечен на столбцах и в легендах как «Низкий», «Средний» помечен как «Высокий», а «Низкий». " помечен как "Средний".
cars %>% count(carb_cat)
carb_cat n
<fct> <int>
1 Low 17
2 Med 13
3 High 2
Я несколько раз сталкивался с этой проблемой, используя реальные данные, и я не вижу аргумента в plot_xtab
, который, кажется, решает эту проблему.