【问题标题】:Plot means of different columns, separated by group绘制不同列的均值,按组分隔
【发布时间】:2022-01-07 19:23:27
【问题描述】:

我是这个论坛的新手,并且是 R 的初学者。我在我的硕士项目中使用 R 进行统计分析,特别是我很难为不同的列绘制均值。

背景:我测量了不同地块(分布在 8 个地块)的土壤动物活动。为此,我插入了装有粉末的带孔棒(每棒 16 个孔),然后检查了每个孔中粉末的消耗量。我将消耗值插入为小数(从 0 到 1 的 6 个分类值),并为每个孔号创建一列(因此 16 列具有消耗值)。现在我想:

  • 按站点绘制每根棍子的平均消耗量(即所有 16 个孔的平均值)
  • 按站点绘制每个孔的平均消耗量(即 16 个平均值)

我已经使用melt() 将我的数据从宽格式重组为长格式,并且我尝试了使用ggplot() 绘制均值的不同方法。但是,它们都不起作用/我收到错误消息并且无法找到解决方案。所以我想也许这里有人可以帮助我。

bait_means_plot <- ggplot(baits.long, aes(x=hole, y=consumption, fill=site))

bait_means_plot + stat_summary(fun = mean, geom = "bar", position ="dodge", width = 0.9) + stat_summary(fun.data = mean_cl_normal, geom = "errorbar", position = position_dodge(0.9), width = 0.3)

例如,上面的示例只是绘制了分类值而不是均值,而相同的代码适用于另一个数据集。有没有简单的修复/解决方法,还是我需要另一种方法?

以下两个屏幕截图有望帮助解释我的数据结构(宽格式和长格式)。如果有任何方法可以轻松提供原始数据文件和/或 R 脚本,我很乐意这样做(只是没有看到这样的选项写问题)。

wide data format long data format

【问题讨论】:

  • 欢迎来到 SO!对于these reasons,将数据作为图像发布不是一个好主意。更好的是编辑您的问题以包含来自dput(&lt;yourdata&gt;) 的输出,其中&lt;yourdata&gt; 是您的输入数据的(一个子集)。
  • @Limey 感谢您的通知,我不知道这一点。我以后会注意的:)

标签: r ggplot2 mean


【解决方案1】:

在过去的几个月里,我不得不自己弄清楚类似的事情,这对我有用,我希望它有用。这取决于是否加载了 tidyverse,因此请确保您拥有它

要在 ggplot 中对它们进行分组,请使用长数据并将“group =”添加到您的 aes 部分,您还可以通过在 aes 调用中添加“color =”来对它们进行颜色编码,例如

aes(x=hole, y=consumption, group=site, colour =site))

如果您使用 group_by() 则 tidyverse 函数将分别对每个组(该列中的唯一条目)进行操作,因此您将使用长数据格式。这对汇总统计很有用,尤其是 summarise() 函数代码中使用的 %>% 是管道运算符,它将前面的内容作为函数的第一个参数插入。

long_data %>% group_by(site)

【讨论】:

  • 非常感谢您的回答!我没有注意到我错误/不完整地使用了美学参数,您的输入使它起作用:)
猜你喜欢
  • 2020-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-30
  • 2019-08-07
  • 2021-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多