Гистограмма, представляющая процент отдельных групп

Пример данных выглядит следующим образом

data = data.frame(group1 = c(1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1),
                  group2 = c(3, 3, 1, 3, 2, 1, 1, 2, 2, 3, 3))

Я хочу создать гистограмму, которая имеет группы 1, 2, 3 по оси x и столбцы для представления пропорций внутри группы.

Например,

ggplot(data, aes(x = group2, fill = group1))+
geom_bar(position = "dodge") 

Имеет столбцы рядом друг с другом, как я хочу, но представляет только количество, тогда как

ggplot(data, aes(x = group2, fill = group1))+
geom_bar(position = "fill") 

дает пропорции, но они сложены - как мне объединить их, чтобы пропорции отображались рядом друг с другом?

заранее спасибо


person mtanner    schedule 25.03.2020    source источник


Ответы (1)


Мы можем получить процент, сгруппированный по «группе2», а затем построить график

library(dplyr)
library(ggplot2)
data %>% 
    group_by(group2) %>% 
    summarise(group1 = mean(group1)) %>%
    ggplot(aes(x = group2, y = group1)) +
        geom_bar(position = "dodge", stat = 'identity') +
        ylab('percentage')

-выход

введите здесь описание изображения


Или другой вариант, если это относительный процент

ggplot(data, aes(x = group2)) + 
         geom_bar(aes(y = (..count..)/sum(..count..)))+
         ylab('percentage')

-выход

введите здесь описание изображения

person akrun    schedule 25.03.2020