Укажите n, чтобы использовать для вычисления процентов в сетке pipe / ggplot / facet - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть df, который выглядит следующим образом

df  <- structure(list(Sex = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 
                                    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
                                    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("Female", 
                                                                                                "Male"), class = "factor"), Victim = structure(c(1L, 1L, 1L, 
                                                                                                                                                 2L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 1L, 
                                                                                                                                                 1L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 2L, 2L
                                                                                                ), .Label = c("no", "yes"), class = "factor"), Crime = structure(c(1L, 
                                                                                                                                                                   2L, 3L, 1L, 1L, 3L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 2L, 2L, 1L, 1L, 
                                                                                                                                                                   1L, 1L, 3L, 2L, 2L, 1L, 3L, 1L, 1L, 3L, 1L, 1L, 1L, 2L, 2L, 2L, 
                                                                                                                                                                   3L, 1L), .Label = c("Kidnapping", "Robbery", "Sexual assault"
                                                                                                                                                                   ), class = "factor")), class = "data.frame", row.names = c(NA, 
                                                                                                                                                                                                                              -35L))

И я построил его так:

df %>%
  group_by(Sex, Victim) %>% 
  count(Crime) %>% 
  mutate(Percent = n/sum(n)*100) %>% 
  ggplot(aes(x=Victim, y=Percent))+
  geom_col()+
  facet_grid(Crime~Sex)

Как видно, проценты были рассчитаны на основе сгруппированных данных, так что каждая комбинация «Секс и жертва» составляет до 100%.

Однако это НЕ то, что я хочу. То, что я хотел бы рассчитать / построить график, это, например, процент женщин, которые не были жертвами похищения (57,14%, а не 50,00% в расчете) по сравнению с женщинами, которые стали жертвами похищения (42,85%, что составляет исправить случайно).

Как мне это написать?

Любая помощь очень ценится.

...