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

问题描述

我有以下示例数据,这些数据描述了问卷中每个受访者回答每个问题(duration@H_404_2@所需的时间(question@H_404_2@),以及回答了week@H_404_2@个问题的时间(同一份问卷有几波)

n <- 100

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

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

@H_404_2@

但是我如何用平均持续时间而不是计数(在y轴上)绘制相同的图?

解决方法

myObj = [{ name: 'ice',price: 24.76834 },{ name: 'cake',price: 12.1623 },{ name: 'powder',price: 2 } ] myObj.forEach(a => a.price = a.price.toFixed(2)); console.log(myObj);是为您执行计算的常用功能:

stat_summary

cols from stat_summary

编辑:另一周,当我发现 ggplot(aes(x = week,y = duration,fill=question),data = data2) + stat_summary(fun=mean,geom="bar",position = "stack") + xlab("Week") 图层可以做什么时,这改变了我的做法! Demystifying stat_ layers in ggplot2

,

我会像这样使用dplyr::group_by

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

祝你好运!