Как создать гистограмму с накоплением в R, где ось Y должна обозначать проценты для баров? - PullRequest
0 голосов
/ 05 марта 2020

Я хотел бы создать гистограмму с накоплением в R. Моя ось X содержит только данные о поле, то есть мужчины или женщины. Мне просто нужно, чтобы ось Y показывала проценты от суммированных баров. Столбец «Выживший» - это просто смесь нулей и единиц. Т.е. 1 обозначает, что индивид пережил опыт, а 0 показывает, что индивид не пережил этот опыт. Я не уверен, что поставить для ярлыка у. Кто-нибудь может помочь, пожалуйста?

ggplot (data = df, mapping = aes (x = Sex, y =?, Fill = Survived)) + geom_bar (stat = "identity")

1 Ответ

1 голос
/ 05 марта 2020

Одним из возможных решений является использование пакета dplyr для расчета процента каждой категории за пределами ggplot2, а затем использование этих значений для получения гистограммы с использованием geom_col:

library(dplyr)
df %>% count(Sex, Survive) %>%
  group_by(Sex) %>%
  mutate(Percent = n/sum(n)*100) 

# A tibble: 4 x 4
# Groups:   Sex [2]
  Sex   Survive     n Percent
  <fct>   <dbl> <int>   <dbl>
1 F           0    26    55.3
2 F           1    21    44.7
3 M           0    34    64.2
4 M           1    19    35.8

А теперь с участок построения:

library(dplyr)
library(ggplot2)

df %>% count(Sex, Survive) %>%
  group_by(Sex) %>%
  mutate(Percent = n/sum(n)*100) %>%
  ggplot(aes(x = Sex, y = Percent, fill = as.factor(Survive)))+
  geom_col()

enter image description here


Воспроизводимый пример

df <- data.frame(Sex = sample(c("M","F"),100, replace = TRUE),
                 Survive = sample(c(0,1), 100, replace = TRUE))
...