R:分组数据的平均值与误差线图

问题描述 投票:0回答:1

我有以下问题。该数据集是通过重复测量的受试者内设计收集的。我的数据集包含 4 个变量。参与者 ID、参与者性别、状况和一项测量值。数据集看起来像这样:

df <- read.table(text = 'ID sex condition value
01 m A 0.0765
01 m B 0.063
01 m C 0.0773
02 f B 0.0599
02 f C 0.0679
02 f A 0.067
03 f C 0.0728
03 f A 0.0589
03 f B 0.0699', header=TRUE)

我现在想做的是绘制一个图表,显示每个条件的平均值和标准差。但图表应该按性别分组。我尝试使用 ez 包中的 ezPlot 绘制此图:

library(ez)

ez_Condition <- ezPlot(df,
                 dv = value, 
                 wid = ID, 
                 within = condition, 
                 between=sex,
                 split=sex,
                 do_bars=TRUE,
                 type = 2, 
                 x = condition
)
ez_Condition

我的问题:这段代码的输出是我正在寻找的图,其中分别可视化两性每种条件的平均值。但误差线没有显示每种情况每种性别的个体标准偏差。相反,对于不适合数据的所有条件,误差线都同样长。

library(ggplot2)

Bar_Mean <- ggplot(data=df, aes(x=condition, y=value, fill=sex)) + 
  geom_bar(position = "dodge", stat = "summary", fun = "mean") +
  labs(title = "Average Value") +
  labs (x="Condition",y="Value") +
  scale_y_reverse(breaks = seq(0,-5, by=-1)) +
  theme_classic() +
  stat_summary(fun.data = mean_cl_normal, geom = "errorbar", position = position_dodge(width=0.9),width=.1)
Bar_Mean

这段代码有效,可视化数据也符合我之前计算的结果。但我宁愿不使用箱线图的条形图。我想要一个看起来像 ezPlot 的图,其中平均值用线连接,并且每个性别都有 2 个图表。

如果我尝试修改我的 ggplot 代码并使用 ,,geom_line” 而不是 ,,geom_bar” 它不再起作用。我如何使用 GGPLOT 获得这样的图?:

提前感谢您的帮助!

r ggplot2 mean standard-deviation errorbar
1个回答
0
投票

您可以计算每个

group_by
的平均值和标准差值。之后,您可以使用
geom_errorbar
添加误差线,并使用
group
美学将它们保留在每个组中,如下所示:

library(dplyr)
library(ggplot2)
df %>%
  group_by(sex, condition) %>%
  summarise(mean_value = mean(value),
            sd_value = sd(value)) %>%
  ggplot(aes(x = condition, y = mean_value, color = sex, group = sex)) +
  geom_point() +
  geom_line() +
  geom_errorbar(aes(ymin = mean_value-sd_value, ymax = mean_value+sd_value)) +
  labs(title = "Average Value") +
  labs (x="Condition",y="Value") +
  theme_classic() 

创建于 2024-01-29,使用 reprex v2.0.2

© www.soinside.com 2019 - 2024. All rights reserved.