Search code examples
rggplot2surveyqualtrics

R multiple choice questionnaire data to ggplot


I have a Qualtrics multiple choice question that I want to use to create graphs in R. My data is organized so that you can answer multiple answers for each question. For example, participant 1 selected multiple choice answers 1 (Q1_1) & 3 (Q1_3). I want to collapse all answer choices in one bar graph, one bar for each multiple response option (Q1_1:Q1_3) divided by the number of respondents who answered this question (in this case, 3).

df <- structure(list(Participant = 1:3, A = c("a", "a", ""), B = c("", "b", "b"), C = c("c", "c", "c")), .Names = c("Participant", "Q1_1", "Q1_2", "Q1_3"), row.names = c(NA, -3L), class = "data.frame")

I want to use ggplot2 and maybe some sort of loop through Q1_1: Q1_3?


Solution

  • Perhaps this is what you want

    f <- 
      structure(
        list(
          Participant = 1:3,
          A = c("a", "a", ""),
          B = c("", "b", "b"),
          C = c("c", "c", "c")),
        .Names = c("Participant", "Q1_1", "Q1_2", "Q1_3"),
        row.names = c(NA, -3L),
        class = "data.frame"
      )
    
    
    library(tidyr)
    library(dplyr)
    library(ggplot2)
    
    nparticipant <- nrow(f)
    f %>% 
      ## Reformat the data
      gather(question, response, starts_with("Q")) %>%
      filter(response != "") %>%
    
      ## calculate the height of the bars
      group_by(question) %>%
      summarise(score = length(response)/nparticipant) %>%
    
      ## Plot
      ggplot(aes(x=question, y=score)) +
      geom_bar(stat = "identity")
    

    enter image description here