Вот вариант с использованием Tidyverse, так как это, кажется, ваши предпочтения.
Я сгенерировал несколько тестовых данных, чтобы показать вам принцип, и назвал переменные немного проще, чем ваш сценарий использования:
library(tidyverse)
set.seed(500)
choices <- c("Unchecked", "Checked")
rows <- 20
df <- data.frame(q1 = sample(choices, rows, replace = TRUE),
q2 = sample(choices, rows, replace = TRUE),
q3 = sample(choices, rows, replace = TRUE),
stringsAsFactors = FALSE)
Приведенный ниже код преобразует ваши данные из широкий формат в длинный формат. У меня есть только три примера переменных, поэтому вам нужно настроить r cols = 1:3
, чтобы включить все 5 столбцов, которые у вас есть. После этого mutate генерирует логическую переменную на основе ваших данных, затем group_by и суммирует вычисление вопроса, задав c среднее значение ответов. Наконец, очень простая гистограмма ggplot.
df %>%
tidyr::pivot_longer(cols = 1:3,
names_to = "question") %>%
mutate(result = value == "Checked") %>%
group_by(question) %>%
summarise(mean = mean(result)) %>%
ggplot(aes(x = question,
y = mean)) +
geom_col()