R语言 根据使用ggplot2 & geom_boxplot创建的箱须图创建汇总表时需要帮助

vfh0ocws  于 2023-03-15  发布在  其他
关注(0)|答案(1)|浏览(117)

尝试做一个汇总表,它将为我提供最小值,四分位数1,中位数,四分位数3和最大值的箱须图我已经做了。
我创建盒须图的代码可以工作,但无法使汇总表工作。
箱须图代码:

ggplot(mpg, aes(drv,cty)) + 
    geom_boxplot(colour = "purple") + 
    labs(x = "Drive Type (drv)", y = "City MPG (cty)", title = "Correlation 
    between Drive Type and City      Miles per Gallon (MPG)") + 
    theme_light()

当前代码汇总表(不工作)-请注意,我知道这个代码肯定是不正确的。
我知道这是第一行或两行是不正确的。
一次尝试:

df <- ggplot(data = mpg, aes(x=drv, y=cty)) + geom_boxplot()
  Summary<-boxplot(df)$stats
  colnames(Summary)<-c("4","f","r")
  rownames(Summary)<-c("Min","First Quartile","Median","Third Quartile","Max")
  Summary

第二次尝试:

Summary<-geom_boxplot(mpg, aes(drv,cty))$stats
  colnames(Summary)<-c("4","f","r")
  rownames(Summary)<-c("Min","First Quartile","Median","Third Quartile","Max")
  Summary
zzlelutf

zzlelutf1#

使用一个小的自定义函数来计算箱形图统计数据dplyr::reframe(需要dplyr >= 1.1.0)和tidyr::pivot_wider,您可以执行以下操作:

library(dplyr)
library(tidyr)
library(ggplot2)

box_stats <- function(x, qs = c(0, 0.25, 0.5, 0.75, 1)) {
  tibble(
    stat = rev(c("min", "p25", "median", "p75", "max")),
    val = rev(stats::quantile(x, qs))
  )
}

# Requires dplyr >= 1.1.0
mpg |>
  reframe(box_stats(cty), .by = drv) |>
  pivot_wider(names_from = drv, values_from = val)
#> # A tibble: 5 × 4
#>   stat       f   `4`     r
#>   <chr>  <dbl> <dbl> <dbl>
#> 1 max       35    21    18
#> 2 p75       21    16    15
#> 3 median    19    14    15
#> 4 p25       18    13    12
#> 5 min       11     9    11

相关问题