R 基于中值对箱线图排序

R 基于中值对箱线图排序,r,boxplot,R,Boxplot,我想用R来做一系列的箱线图,这些箱线图是按中值排序的。假设我执行: boxplot(cost ~ type) 如果成本显示在y轴上,类型类别显示在x轴上,则这会给我一些方框图: ----- ----- | | [ ] | | [ ] | | ----- ----- A B 然而,我想要的是从最高中值到最低中值排序的箱线图。我的怀疑是,我需要做的是更改类型(A或B)的标签,以数字表示最

我想用R来做一系列的箱线图,这些箱线图是按中值排序的。假设我执行:

boxplot(cost ~ type)
如果成本显示在y轴上,类型类别显示在x轴上,则这会给我一些方框图:

-----     -----
  |         |
 [ ]        |
  |        [ ]
  |         |
-----     -----
  A         B

然而,我想要的是从最高中值到最低中值排序的箱线图。我的怀疑是,我需要做的是更改类型(A或B)的标签,以数字表示最低和最高的中值,但我想知道是否有更聪明的方法来解决这个问题。

查看
?重新排序
。该示例似乎是您想要的,但排序顺序相反。我更改了下面第一行中的
-count
,以便按照您想要的顺序进行排序

  bymedian <- with(InsectSprays, reorder(spray, -count, median))
  boxplot(count ~ bymedian, data = InsectSprays,
          xlab = "Type of spray", ylab = "Insect count",
          main = "InsectSprays data", varwidth = TRUE,
          col = "lightgray")
bymedia是的,这就是想法:

> set.seed(42)                     # fix seed       
> DF <- data.frame(type=sample(LETTERS[1:5], 100, replace=TRUE), 
+                  cost=rnorm(100)) 
>
> boxplot(cost ~ type, data=DF)    # not ordered by median
>
> # compute index of ordered 'cost factor' and reassign          
> oind <- order(as.numeric(by(DF$cost, DF$type, median)))    
> DF$type <- ordered(DF$type, levels=levels(DF$type)[oind])   
>
> boxplot(cost ~ type, data=DF)    # now it is ordered by median
>设置种子(42)#固定种子
>DF
>箱线图(成本~类型,数据=DF)#不按中值排序
>
>#计算有序“成本因素”的索引并重新分配
>oind DF$类型
>箱线图(cost~type,data=DF)#现在按中值排序

注意缺少的值,您必须添加
na.rm=TRUE
才能使其工作。如果没有,代码就根本不起作用。我花了几个小时才发现

  bymedian <- with(InsectSprays, reorder(spray, -count, median, **na.rm = TRUE**)
  boxplot(count ~ bymedian, data = InsectSprays,
          xlab = "Type of spray", ylab = "Insect count",
          main = "InsectSprays data", varwidth = TRUE,
          col = "lightgray")

bymedian您应该指定这是指。它实际上应该是一个评论,但它也可以作为一个独立的答案。我把它标记为“非答案”,因为完全相同的答案被发布(并被接受)。用户刚刚添加了新参数。这并不能提高解决方案的质量,也不足以作为一个单独的答案。您能看看我的问题吗?谢谢