Один из способов сделать это заключается в следующем.Сначала я вычисляю средние и стандартные ошибки и помещаю их в агрегированный фрейм данных.
library(ggplot2)
agg <- aggregate(moisturep ~ Var + Temp, pgpr, mean)
tmp <- aggregate(moisturep ~ Var + Temp, pgpr, sd)
names(tmp)[3] <- "StdErr"
agg <- merge(agg, tmp)
rm(tmp)
ggplot(agg,
aes(x = Var,
y = moisturep,
fill = Temp)) +
geom_bar(stat = "identity",
position = "dodge") +
geom_errorbar(aes(ymin = moisturep - StdErr, ymax = moisturep + StdErr),
position = position_dodge(0.9),
width = 0.25)
Данные в формате dput
.
pgpr <-
structure(list(Var = structure(c(1L, 1L, 2L, 2L, 1L, 1L, 2L,
2L), .Label = c("Purple Teepee", "Safari"), class = "factor"),
Temp = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L),
.Label = c("cool", "warm"), class = "factor"),
moisturep = c(89.01974, 80.87346, 78.97458, 86.98475,
98.98734, 98.76593, 87.98745, 90.4587)),
class = "data.frame", row.names = c(NA, -8L))