【问题标题】:how to order a variable depending on the mean of another variable如何根据另一个变量的平均值对变量进行排序
【发布时间】:2021-09-10 06:50:27
【问题描述】:

我有一个数据库,其中有来自 75 所学校的 30000 名学生的 30000 次观察,每所学校都由自己的代码定义,例如,您在下面看到由代码“01302P”定义的同一所学校的 5 名学生的分数”。

但是,还有许多其他学校(总共 75 所),并且对于每所学校,我们都有一个特定的代码,

然后,我们计算每所学校所有学生的平均分数,这意味着我们有一个包含每所学校 75 个平均分数的表格,这个平均分数可以让我们比较每所学校的表现。

现在我要做的是根据学校的平均分数来订购学校,我尝试了以下代码:

boxplot(moy_exam2~CODEETAB,epl_data,las=2,main="schools order",xlab = NULL,ylab = "Mean of score (moy_exam2)",col = 'red')

它生成了这个箱线图,我可以根据学生的平均分数来判断哪所学校是最好的,它的代码是“51680Y”,但我不能做更多的事情!因为剧情里满是学校,看不清楚顺序。

但我需要一种方法来根据平均分数结果对所有学校进行排序,

另外我更喜欢使用 ggplot2 库来增强代码

请提前帮助和感谢。

【问题讨论】:

    标签: r ggplot2 mean boxplot


    【解决方案1】:

    您可以根据学校的平均分数(下面使用 dplyr 完成)对学校进行排序,然后将该学校顺序指定为学校的因子水平。

    library(ggplot2)
    library(dplyr)
    
    df <- data.frame(
      schools = rep(LETTERS[1:20], 20),
      scores = rnorm(400, sample(1:400))
    )
    
    means <- group_by(df, schools) %>%
      summarise(mu = mean(scores)) %>%
      arrange(mu)
    
    df %>%
      mutate(schools = factor(schools, levels = means$schools)) %>%
      ggplot(aes(schools, scores)) +
      geom_boxplot()
    

    reprex package (v1.0.0) 于 2021 年 6 月 27 日创建

    【讨论】:

    • 谢谢老兄,但我得到了这个错误:平均值错误(分数):找不到对象'分数'我认为summarise函数行总结中有问题(mu = mean(scores))
    【解决方案2】:

    你可以走的路线:计算学校的平均分:

    library(dplyr)
    
    data %>% 
    group_by(schools) %>%
    summarize(score_mean = mean(scores)) %>%
    ungroup() %>%
    arrange(desc(score_mean))
    

    在此之后,您可以使用新的 DF 来创建视觉效果。也不要忘记替换变量名

    【讨论】:

      猜你喜欢
      • 2021-06-14
      • 1970-01-01
      • 2010-12-06
      • 2021-04-30
      • 1970-01-01
      • 2017-06-13
      • 2013-05-13
      • 1970-01-01
      • 2014-04-30
      相关资源
      最近更新 更多