ggplot и pivot_longer по нескольким факторам - PullRequest
2 голосов
/ 23 марта 2020

Я хочу сделать свой фрейм данных длиннее, чтобы из него можно было построить график. У меня есть дихотомическая переменная (пол), по которой я хочу отсортировать. И у меня есть четыре воздействия как факторы.

  DF <- data.frame(sex = rbinom(1000, 1, .5),
                                expo_1 = rbinom(1000, 1:4, .15),
                                expo_2 = rbinom(1000, 1:4, .25),
                                expo_3 = rbinom(1000, 1:4, .3),
                                expo_4 = rbinom(1000, 1:4, .45))                                                   
  DF$sex <- as.factor(sex)
  DF$expo_1 <- as.factor(expo_1)
  DF$expo_2 <- as.factor(expo_2)
  DF$expo_3 <- as.factor(expo_3)
  DF$expo_4 <- as.factor(expo_4)

Это насколько я понял. Я изо всех сил пытаюсь получить счет для каждого уровня выставки.

DF %>%
  pivot_longer(cols = -sex, names_to = "expo") %>%
  group_by(sex, expo) 

И я хотел бы иметь что-то вроде этого:

enter image description here

Помощь очень ценится и заранее спасибо!

1 Ответ

2 голосов
/ 23 марта 2020

Вы были почти там - используйте фасеты и geom_bar для необработанного подсчета value в качестве заполнения эстетики c. Сложенная позиция по умолчанию.

Совет: используйте mutate_all для более простого преобразования типов

library(tidyverse)
DF <- data.frame(sex = rbinom(1000, 1, .5),
                 expo_1 = rbinom(1000, 1:4, .15),
                 expo_2 = rbinom(1000, 1:4, .25),
                 expo_3 = rbinom(1000, 1:4, .3),
                 expo_4 = rbinom(1000, 1:4, .45))   

DF <- DF %>% mutate_all(as.factor)

df_long <- DF %>%
  pivot_longer(cols = -sex, names_to = "expo")

ggplot(df_long) + geom_bar(aes(x = expo, fill = value)) +facet_grid(~sex)

Создано в 2020-03-23 ​​по представ пакет (v0.3.0)

...