gpt4 book ai didi

r - 如何按其中一行的子集的平均值对数据框进行排序?

转载 作者:行者123 更新时间:2023-12-01 09:16:23 24 4
gpt4 key购买 nike

我是 R 的新手,但我正在取得很好的进步。除了一件事之外,我已经能够按照我的意愿改变 ggplot2:分类标签在我的箱线图中沿 x 轴绘制的顺序。我认为这只是我关于如何在公式中处理数据框范围的知识的一个漏洞,但这是假数据,作为一个名为 df 的数据框:

Index    Label    Value
index1 A 1
index2 A 2
index3 A 3
index4 B 12
index5 B 11
index6 B 10
index7 C 8
index8 C 7
index9 C 9
...
index76 Z 15
index77 Z 17
index78 Z 16

我的绘图代码看起来像 qplot(df$Label, df$Value, data=df) + scale_x_discrete("Label") + opts(axis.text.x = theme_text(angle = 90, hjust = 0 , size=7)) + geom_boxplot() 并给出了我想要的,这是一个箱形图,显示标签 A 的一个盒子和 mustache ,一个用于 B,一个用于 C。但是,轴进入标签的顺序(箱线图 1、2、3 最接近原点,10、11、12 在中间,7、8、9 在图的右侧)。我想要的是箱线图数据从标签内平均值最高的子集开始,然后按降序排列。我可以通过 mean(df$Label[1:3])mean(df$Label[4:6]) 等对每个标签进行平均,但我可以不知道如何显示图表,使标签的绘图不按照它们在 factor(df$Label) 中出现的顺序(即 A、B、C 沿 x 和框位于 2、11、8),但按标签内平均值从高到低的顺序排列(即沿着 x 的 B、C、An,然后框位于 11、8、2)。

我想我会创建一个由每个标签内平均值组成的向量,并以某种方式将其传递给 ggplot 以指定轴顺序,但我不知道如何开始创建向量。

我需要知道的是:

获取由每个标签的平均值组成的向量(按从高到低的顺序)的最佳方法是什么?

我如何将该向量传递给 ggplot,以便它根据这些值对 x 轴进行排序,同时仍然用 factor(df) 标记 x 轴$标签)

我也乐于接受有关其他显示数据方式的建议,但我认为我已经非常接近我想要的了,并且给定标签内的值的均值和分布很重要。

最佳答案

这里有一个方法可以做到这一点

# create a dummy data frame
set.seed(1234)
df = data.frame(
label = rep(letters[1:3], each = 3),
value = sample(100, 9))

# boxplot without sorting
qplot(label, value, data = df, geom = 'boxplot')

enter image description here

# boxplot with label sorted by median of value
qplot(reorder(label, value, median), value, data = df, geom = 'boxplot')

enter image description here

关于r - 如何按其中一行的子集的平均值对数据框进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5784946/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com