首页 > 解决方案 > 为什么重新排序功能只能部分工作?

问题描述

我正在尝试根据组内中位数的大小来安排我的箱线图,并使用以下代码:

ggplot(fulldata,aes(x=fct_reorder(gymnasiegrov, PERC_CREDIT, .fun = median), y=PERC_CREDIT))+geom_boxplot()+coord_flip()

我得到以下结果:

在此处输入图像描述

似乎出于某种未知原因,值仅排序到第 11 类(samhälls-och ekonomiprogrammet)。在那之后,这些立场似乎完全是任意的。

为什么会发生这种情况,我该如何补救?

一小段数据:

structure(list(gymnasiegrov = c("Hotell- och Restaurang", "Oklart", 
"specialutformat program", "komvux", "Oklart", "bygg, el, fordon, hantverk, sjöfart, industriteknik", 
"estetiska programmet", "komvux", "naturvetenskapliga programmet", 
"Oklart", "specialutformat program", "estetiska programmet", 
"medieprogrammet/medieproduktion", "specialutformat program", 
"specialutformat program", "komvux", "estetiska programmet", 
"samhällsvetenskapliga programmet", "specialutformat program", 
"friskoleprogram"), PERC_CREDIT = c(0.333333333333333, 0, 0.25, 
0.105555555555556, 0, 0.6, 0.0111111111111111, 0.705555555555556, 
0.377777777777778, 0.527777777777778, 0.461111111111111, NA, 
0, 0.75, 0, 0, 0.45, 0.7, 0, 0.65)), row.names = c(NA, 20L), class = "data.frame")

大量数据摘录:

    structure(list(gymnasiegrov = c("Hotell- och Restaurang", "Oklart", 
"specialutformat program", "komvux", "Oklart", "bygg, el, fordon, hantverk, sjöfart, industriteknik", 
"estetiska programmet", "komvux", "naturvetenskapliga programmet", 
"Oklart", "specialutformat program", "estetiska programmet", 
"medieprogrammet/medieproduktion", "specialutformat program", 
"specialutformat program", "komvux", "estetiska programmet", 
"samhällsvetenskapliga programmet", "specialutformat program", 
"friskoleprogram", "teknikprogrammet", "specialutformat program", 
"teknikprogrammet", "Handels- och administrationsprogrammet", 
"Hotell- och Restaurang", "samhällsvetenskapliga programmet", 
"samhälls- och ekonomiprogrammet", "specialutformat program", 
"specialutformat program", "komvux", "specialutformat program", 
"specialutformat program", "bygg, el, fordon, hantverk, sjöfart, industriteknik", 
"komvux", "Handels- och administrationsprogrammet", "teknikprogrammet", 
"teknikprogrammet", "friskoleprogram", "specialutformat program", 
"naturvetenskapliga programmet", "naturvetenskapliga programmet", 
"samhällsvetenskapliga programmet", "ekonomiprogrammet/ ekonomi", 
"samhällsvetenskapliga programmet", "samhällsvetenskapliga programmet", 
"Hotell- och Restaurang", "specialutformat program", "samhällsvetenskapliga programmet", 
"ekonomiprogrammet/ ekonomi", "bygg, el, fordon, hantverk, sjöfart, industriteknik", 
"ekonomiprogrammet/ ekonomi", "komvux", "bygg, el, fordon, hantverk, sjöfart, industriteknik", 
"estetiska programmet", "estetiska programmet", "samhällsvetenskapliga programmet", 
"ekonomiprogrammet/ ekonomi", "naturvetenskapliga programmet", 
"ekonomiprogrammet/ ekonomi", "bygg, el, fordon, hantverk, sjöfart, industriteknik", 
"ekonomiprogrammet/ ekonomi", "bygg, el, fordon, hantverk, sjöfart, industriteknik", 
"ekonomiprogrammet/ ekonomi", "bygg, el, fordon, hantverk, sjöfart, industriteknik", 
"naturvetenskapliga programmet", "Handels- och administrationsprogrammet", 
"ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ ekonomi", "bygg, el, fordon, hantverk, sjöfart, industriteknik", 
"bygg, el, fordon, hantverk, sjöfart, industriteknik", "ekonomiprogrammet/ juridik", 
"ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ juridik", "ekonomiprogrammet/ ekonomi", 
"ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ ekonomi", "bygg, el, fordon, hantverk, sjöfart, industriteknik", 
"ekonomiprogrammet/ ekonomi", "Handels- och administrationsprogrammet", 
"ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ ekonomi", "estetiska programmet", 
"ekonomiprogrammet/ ekonomi", "teknikprogrammet", "samhällsvetenskapliga programmet", 
"naturvetenskapliga programmet", "naturvetenskapliga programmet", 
"teknikprogrammet", "ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ ekonomi", 
"ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ ekonomi", "samhällsvetenskapliga programmet", 
"samhällsvetenskapliga programmet", "naturvetenskapliga programmet", 
"ekonomiprogrammet/ juridik", "ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ juridik", 
"samhällsvetenskapliga programmet", "ekonomiprogrammet/ ekonomi", 
"ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ ekonomi", 
"samhällsvetenskapliga programmet", "samhällsvetenskapliga programmet", 
"samhällsvetenskapliga programmet", "ekonomiprogrammet/ juridik", 
"teknikprogrammet", "teknikprogrammet", "ekonomiprogrammet/ ekonomi", 
"ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ ekonomi", 
"ekonomiprogrammet/ ekonomi", "naturvetenskapliga programmet", 
"naturvetenskapliga programmet", "ekonomiprogrammet/ ekonomi", 
"ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ ekonomi", "naturvetenskapliga programmet", 
"ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ juridik", 
"teknikprogrammet", "ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ ekonomi", 
"ekonomiprogrammet/ ekonomi", "naturvetenskapliga programmet", 
"ekonomiprogrammet/ juridik", "naturvetenskapliga programmet", 
"teknikprogrammet", "ekonomiprogrammet/ juridik", "ekonomiprogrammet/ ekonomi", 
"ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ ekonomi", 
"samhällsvetenskapliga programmet", "ekonomiprogrammet/ ekonomi", 
"samhällsvetenskapliga programmet", "estetiska programmet", "ekonomiprogrammet/ ekonomi", 
"ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ ekonomi", 
"ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ juridik", 
"ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ ekonomi", "teknikprogrammet", 
"naturvetenskapliga programmet", "ekonomiprogrammet/ ekonomi", 
"ekonomiprogrammet/ ekonomi", "ekonomiprogrammet/ juridik", "ekonomiprogrammet/ ekonomi", 
"Oklart", "Oklart", "Oklart", "Oklart", "Oklart", "Oklart", "Oklart"
), PERC_CREDIT = c(0.333333333333333, 0, 0.25, 0.105555555555556, 
0, 0.6, 0.0111111111111111, 0.705555555555556, 0.377777777777778, 
0.527777777777778, 0.461111111111111, NA, 0, 0.75, 0, 0, 0.45, 
0.7, 0, 0.65, 0.416666666666667, NA, 0, 0, 0.733333333333333, 
0.35, 0.716666666666667, 0.0111111111111111, 0.0111111111111111, 
0.0388888888888889, 0.711111111111111, 0.633333333333333, 0.705555555555556, 
0.488888888888889, 0.633333333333333, 0, 0.716666666666667, 0.261111111111111, 
0.716666666666667, 0.522222222222222, 0, 0.766666666666667, 0.727777777777778, 
NA, 0.255555555555556, 0, 0, 0, NA, 0.638888888888889, 0.0111111111111111, 
0, 0.65, NA, 0.716666666666667, 0.0111111111111111, 0.522222222222222, 
0.75, 0.705555555555556, 0.7, NA, 0.344444444444444, 0.627777777777778, 
0, 0.622222222222222, 0.105555555555556, 0, NA, 0, 0.616666666666667, 
0.211111111111111, 0.0111111111111111, 0.583333333333333, 0.605555555555556, 
0.6, 0.388888888888889, 0, 0, 0.733333333333333, 0.388888888888889, 
0.633333333333333, 0.6, 0.588888888888889, 0.633333333333333, 
0.455555555555556, 0.283333333333333, 0.527777777777778, 0.644444444444444, 
0.211111111111111, NA, 0.6, 0.6, 0.355555555555556, 0.622222222222222, 
0.572222222222222, 0.194444444444444, 0, 0.605555555555556, 0.427777777777778, 
0, 0.65, 0, 0.122222222222222, 0.533333333333333, 0.422222222222222, 
0, 0.522222222222222, 0, 0.15, 0.366666666666667, 0.572222222222222, 
0.05, 0.194444444444444, 0.733333333333333, 0, 0, 0.733333333333333, 
0.616666666666667, 0.733333333333333, 0, 0.633333333333333, 0.0111111111111111, 
0.65, 0.0111111111111111, 0, 0.733333333333333, 0.622222222222222, 
0.633333333333333, 0.594444444444444, 0, 0.627777777777778, 0.616666666666667, 
0.205555555555556, 0.0111111111111111, 0.616666666666667, 0.527777777777778, 
0.633333333333333, 0, 0.0111111111111111, 0.716666666666667, 
0.661111111111111, 0, 0, 0.622222222222222, 0.544444444444444, 
0, 0.0666666666666667, 0.172222222222222, 0, 0, 0.338888888888889, 
0, 0.516666666666667, 0.705555555555556, 0.616666666666667, 0.4, 
0.25, 0.25, 0.0944444444444444, 0.177777777777778, 0.583333333333333, 
0.583333333333333)), class = "data.frame", row.names = c(NA, 
-162L))

标签: rggplot2boxplot

解决方案


您的数据中有缺失值。如果您想在计算中位数时忽略这些值,则需要明确说明,fct_reorder否则缺失值将排序到最后。

ggplot(fulldata,aes(x=fct_reorder(gymnasiegrov, PERC_CREDIT, .fun = median, na.rm=T), y=PERC_CREDIT))+
  geom_boxplot()+
  coord_flip()

在此处输入图像描述


推荐阅读