3

I have the following sample data, which describe how long (duration) each respondent in my questionnaire needed to answer each question (question) and in which week the question was answered (there were several waves of the same questionnaire)

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")

But how can I make the same plot with mean durations instead of counts (on the y-axis)?

2 Answers 2

2

stat_summary is the usual function for doing the calculations for you:

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

cols from stat_summary

Edit: This changed my practice the other week when I found out what stat_ layers can do! Demystifying stat_ layers in ggplot2

Sign up to request clarification or add additional context in comments.

Comments

1

I would use dplyr::group_bylike so.

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

Good luck!

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.