ggplot:绘制平均值而不是计数

ggplot: plot mean values instead of counts

我有以下样本数据,它描述了我问卷中的每个受访者需要多长时间 (duration) 回答每个问题 (question) 以及 week 问题被回答了(同一个问卷有好几波)

n <- 100

data2 <- data.frame(
  question = paste("q", sample(1:3, n, replace = TRUE), sep=""),
  week = sample(1:3, n, replace = TRUE),
  duration = round(rnorm(n, mean = 15, sd = 5), 0)
)

ggplot(aes(x = week, fill=question), data = data2) + geom_bar(position='stack') +
xlab("Week")

但是我怎样才能用平均持续时间而不是计数(在 y 轴上)制作相同的图?

我会这样使用dplyr::group_by

data2 %>% 
  group_by(week,question) %>% 
  summarise(mean = mean(duration)) %>% 
  ggplot(aes(week,mean,fill = factor(question))) +
  geom_col()

祝你好运!

stat_summary 是为您进行计算的常用函数:

  ggplot(aes(x = week, y = duration, fill=question), data = data2) +
    stat_summary(fun=mean, geom="bar", position = "stack") +
    xlab("Week")

编辑:上周我发现 stat_ 层可以做什么时,这改变了我的做法! Demystifying stat_ layers in ggplot2