Я не уверен, что правильно понимаю, но вам нужен следующий код?
library(dplyr)
library(ggplot2)
df2 <- df %>%
group_by(Gender) %>%
summarize(x1 = sum(X1), x2 = sum(X2), x3=sum(X3),x4 =sum(X4)) %>%
melt(id.vars = "Gender")
ggplot(df2, aes(variable, value, color = Gender, fill = Gender)) +
geom_bar(stat = "identity", position = "dodge")
![enter image description here](https://i.stack.imgur.com/JUj6B.png)
Увидев ответ @denis, я адаптировал его код, чтобы сделать более или менее то же самое, но с position = "dodge"
.
df3 <- df %>%
group_by(Gender, book_id) %>%
summarize(x1 = sum(X1), x2 = sum(X2), x3=sum(X3),x4 =sum(X4)) %>%
melt(id.vars = c("Gender", "book_id"))
ggplot(df3, aes(as.factor(book_id), value, color = variable, fill = variable)) +
geom_bar(stat = "identity", position = "dodge") +
facet_wrap(~ Gender)
Что касается второго вопроса, вы можете использовать aggregate
, чтобы получить ответы на каждый вопрос по Gender
.
aggregate(. ~ Gender, df[4:8], sum)
# Gender X1 X2 X3 X4
#1 Female 10 1 13 1
#2 male 10 3 11 3