Без воспроизводимого примера трудно быть уверенным, что этот ответ будет соответствовать вашему набору данных.
Здесь, основываясь на нескольких предоставленных вами данных, я создаю поддельный пример:
df <- data.frame(Donation = sample(1:20, 100, replace = TRUE),
Treatment = sample(c("TG1","TG2"), 100, replace = TRUE),
Category = sample(c("Teenager","Adult"), size = 100, replace = TRUE))
Donation Treatment Category
1 2 TG2 Adult
2 6 TG2 Adult
3 11 TG1 Teenager
4 16 TG2 Adult
5 7 TG1 Teenager
6 17 TG2 Adult
Вы можете использовать dplyr
для вычисления суммы пожертвования на группу лечения и категорию следующим образом:
library(dplyr)
DF <- df %>% group_by(Treatment, Category) %>%
summarise(Sum = sum(Donation))
# A tibble: 4 x 3
# Groups: Treatment [2]
Treatment Category Sum
<fct> <fct> <int>
1 TG1 Adult 207
2 TG1 Teenager 236
3 TG2 Adult 372
4 TG2 Teenager 235
Затем вы можете использовать этот новый фрейм данных "DF", чтобы получить гистограмму, используя ggplot2
:
library(ggplot2)
ggplot(DF, aes(x = Treatment, y = Sum, fill = Category))+
geom_col(position = position_dodge())
РЕДАКТИРОВАТЬ: Разделительная гистограмма
Чтобы получить только сумму пожертвования на группу лечения:
ggplot(DF, aes(x = Treatment, y = Sum, fill = Treatment))+
geom_col()
Для получения только суммы пожертвований по категориям:
ggplot(DF, aes(x = Category, y = Sum, fill = Category))+
geom_col()