Столбец столбца на основе значений другого столбца - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть что-то вроде следующего набора данных:

1. Donation 2. Treatment 3. Category. 
2€              TG2           Teenager
1€              TG1           Adult
2€              TG2           Adult
and so on

Есть несколько участников. Каждый участник входит в специальную группу лечения (TG) и относится к определенной категории.

Теперь я бы хотел построить две диаграммы:

  1. Пожертвования всех TG на одной диаграмме
  2. Пожертвования всех категорий на одной диаграмме

Я не уверен, как это сделать. Если я использую barplot (таблица (Пожертвование)), он дает мне только информацию о пожертвованиях. Можно ли как-то сгруппировать эти данные в барплот?

Например

1 Ответ

1 голос
/ 03 февраля 2020

Без воспроизводимого примера трудно быть уверенным, что этот ответ будет соответствовать вашему набору данных.

Здесь, основываясь на нескольких предоставленных вами данных, я создаю поддельный пример:

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())

enter image description here

РЕДАКТИРОВАТЬ: Разделительная гистограмма

Чтобы получить только сумму пожертвования на группу лечения:

ggplot(DF, aes(x = Treatment, y = Sum, fill = Treatment))+
  geom_col()

enter image description here

Для получения только суммы пожертвований по категориям:

ggplot(DF, aes(x = Category, y = Sum, fill = Category))+
  geom_col()

enter image description here

...