исторический столбец в зависимости от относительной частоты другого столбца (R) - PullRequest
0 голосов
/ 26 марта 2020

Допустим, у нас есть таблица:

x  y  
1  43
1  54
2  54   
3  22
2  22
1  43

Я хочу, чтобы гист по оси X только 1,2,3, поэтому он распознает уникальные значения, но кроме того, он должен показывать в% частоту из числа 43 в 1, затем 54 и так далее. Должны ли оба столбца быть разложены?

1 Ответ

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

Вот мое решение:

library("ggplot2")
library("dplyr")
library("magrittr")
library("tidyr")

df <- data.frame(x = c(1,1,2,3,2,1), y = c(43,54,54,22,22,43))

#Creating a counter that will keep track
#Of how many of each number in y exist for each x category
df$n <- 1
df %<>% #This is a bidirectional pipe here that overwrites 'df' with the result!
  group_by(x, y) %>% #Unidirectional pipe
  tally(n) %>%
  mutate(n = round(n/sum(n), 2)) #Calculating as percentage

#Plotting
df %>% 
  ggplot(aes(fill = as.factor(y), y = n, x = x)) + 
  geom_bar(position = "fill", stat = "identity") + 
  scale_y_continuous(labels = scales::percent) +
  labs(y = "Percentage contribution from each y category") + 
  #Adding the percentage values as labels
  geom_text(aes(label = paste0(n*100,"%")), position = position_stack(vjust = 0.5), size = 2)

stackedbarplot.png

Примечание : значения по оси Y представлены в процентах, потому что position="fill" передается geom_bar().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...