R процентный участок после группировки - PullRequest
0 голосов
/ 05 июля 2018

Цель состоит в том, чтобы получить распределение ответов мужчин и женщин для книг по жанрам. Я использую приведенный ниже фрейм данных, чтобы проиллюстрировать проблему. Это набор данных опроса, где 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)

enter image description here

Как получить уникальное количество пользователей и книг по жанру за ответ? Должен ли я использовать условный подход, где внутри суммировать select 'book_id' where X1 == 1 затем получить уникальный идентификатор (ы)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...