R 按另一个因子重新排序因子级别
我正在尝试使用ggplot2创建一个条形图,其中条形图按填充因子的某一级别中的观察值比例排序。例如,假设我有如下数据:R 按另一个因子重新排序因子级别,r,ggplot2,R,Ggplot2,我正在尝试使用ggplot2创建一个条形图,其中条形图按填充因子的某一级别中的观察值比例排序。例如,假设我有如下数据: my_data <- data.frame(group = as.factor(rep(1:3, each = 5)), success = as.factor(c('yes','yes','yes','yes','no','yes','yes','no','no','no','yes','no','no','no','no'))) group success 1
my_data <- data.frame(group = as.factor(rep(1:3, each = 5)), success = as.factor(c('yes','yes','yes','yes','no','yes','yes','no','no','no','yes','no','no','no','no')))
group success
1 1 yes
2 1 yes
3 1 yes
4 1 yes
5 1 no
6 2 yes
7 2 yes
8 2 no
9 2 no
10 2 no
11 3 yes
12 3 no
13 3 no
14 3 no
15 3 no
有没有办法对我的分组重新排序,使它们按成功比例的升序或降序显示?我们可以在按“组”分组后得到比例
library(dplyr)
library(ggplot2)
my_data %>%
group_by(group) %>%
mutate(prop = mean(success == 'yes')) %>%
ungroup %>%
ggplot(aes(x = reorder(group, prop), fill = success)) +
geom_bar(position = 'fill') +
xlab('group')
我们可以通过“组”分组得到比例
library(dplyr)
library(ggplot2)
my_data %>%
group_by(group) %>%
mutate(prop = mean(success == 'yes')) %>%
ungroup %>%
ggplot(aes(x = reorder(group, prop), fill = success)) +
geom_bar(position = 'fill') +
xlab('group')
从forcats包使用fct_重新排序:
它所做的是根据成功的平均值=='yes'对组进行重新排序,这给出了成功率
您可以使用.desc参数反转顺序。使用fct\u从forcats包重新排序:
它所做的是根据成功的平均值=='yes'对组进行重新排序,这给出了成功率
您可以使用.desc参数颠倒顺序。谢谢,这正是我想要的!谢谢,那正是我想要的!
ggplot(my_data, aes(x = forcats::fct_reorder(group,success == 'yes',mean,.desc = T), fill = success)) +
geom_bar(position = 'fill')+
xlab("group")