Цель состоит в том, чтобы получить распределение ответов мужчин и женщин для книг по жанрам. Я использую приведенный ниже фрейм данных, чтобы проиллюстрировать проблему. Это набор данных опроса, где X1, X2, X3, X4
- это ответы на вопрос. Этот фрейм данных отображается после преобразования данных, чтобы отразить ответы в качестве фиктивных переменных.
book_id, user_id, rate, X1, X2 ,X3 ,X4, Gender,genre
40,1,4.5,0,1,0,0,male,fiction
48,1,3.5,1,0,0,1,male,fiction
54,1,4,1,0,0,0,male,fiction
79,1,2.5,1,0,1,0,male,non-fiction
80,1,4.5,0,0,1,0,male,non-fiction
95,1,5,1,0,1,0,male,non-fiction
95,2,3,0,0,0,1,Female,non-fiction
99,2,4.5,0,0,1,0,Female,non-fiction
2,2,0.5,0,0,0,0,Female,non-fiction
5,2,4.5,1,0,1,0,Female,non-fiction
54,2,4,0,1,0,0,Female,fiction
79,2,2.5,1,0,1,0,Female,non-fiction
80,2,4.5,0,0,1,0,Female,non-fiction
7,2,4.5,1,0,1,0,Female,fiction
7,3,5,1,0,1,0,Female,fiction
9,3,4,0,0,1,0,Female,auto-bio
54,3,4,1,0,0,0,Female,fiction
79,3,2.5,1,0,1,0,Female,non-fiction
80,3,4.5,0,0,1,0,Female,non-fction
17,4,3.5,1,0,0,0,male,auto-bio
21,4,5,1,0,1,0,male,auto-bio
21,5,5,0,1,1,0,male,auto-bio
17,5,0.5,0,0,0,1,male,auto-bio
20,5,5,0,0,1,0,male,fiction
20,6,1.5,0,0,0,1,male,fiction
21,6,5,0,0,1,0,male,auto-bio
21,7,2,1,0,0,0,male,auto-bio
21,8,4.5,1,0,1,0,Female,auto-bio
20,8,4.5,1,0,1,0,Female,fiction
7,8,4.5,1,0,1,0,Female,fiction
22,9,5,0,0,1,0,male,fiction
54,9,4,1,0,0,0,male,fiction
79,9,2.5,1,0,1,0,male,non-fiction
80,10,4.5,1,0,1,0,male,non-fiction
22,10,4.5,0,1,1,0,male,fiction
22,11,0.5,0,0,1,0,Female,fiction
28,11,3.5,1,0,0,0,Female,auto-bio
Я использую dplyr
, чтобы гробить на genre
и Gender
, затем summarize
.
df <- books %>%
group_by(Gender, genre) %>%
summarize(x1 = round(sum(X1)/length(X1)),
x2 = round(100 * sum(X1)/length(X2)),
x3=round(100 * sum(X1)/length(X3)),
x4 =round(sum(X4)/length(X4))) %>%
melt(id.vars = c("Gender", "genre"))
Меня беспокоит то, что на самом деле это не дает уникального числа / процента книг или пользователей на жанр за ответ. Или это? Кроме того, так как я суммирую и получаю 1 (ые), я не уверен, что это фактически отражает процент пользователей или процент книг.
ggplot(df, aes(as.factor(genre), value, color = variable, fill = variable)) +
geom_bar(stat = "identity", position = "dodge") +
facet_wrap(~ Gender)
Как получить уникальное количество пользователей и книг по жанру за ответ? Должен ли я использовать условный подход, где внутри суммировать select 'book_id' where X1 == 1
затем получить уникальный идентификатор (ы)?