假设我有这个数据框架:
我想做一个图表,显示每个SES (社会经济地位)女性的平均收入是多少,男性的平均收入是多少。
到目前为止,我有以下代码:
ggplot(incomeSorted, aes(GENDER)) +
scale_y_continuous("Mean")+
geom_bar(position = "dodge")+
facet_wrap("SES")这是输出:

我如何制作图表来显示收入的平均值,而不是计算每个类别的女性和男性数量?
感谢大家的支持!
发布于 2020-09-09 06:22:21
如果你想显示平均收入,你必须计算它。您可以在summarise()中使用dplyr和group_by()来获取关键变量,然后进行绘图。下面是该任务的代码:
library(ggplot2)
library(dplyr)
#Data
df <- data.frame(id=1:8,Gender=c(rep('Female',4),rep(c('Male','Female'),2)),
income=c(73,150,220.18,234,314.16,983.1,1001,1012),
SES=c('Bottom','Bottom','Middle','Middle','Middle',
'Upper','Upper','Upper'),
stringsAsFactors = F)
#Compute and plot
df %>% group_by(SES,Gender) %>%
summarise(MeanIncome=mean(income,na.rm=T)) %>%
ggplot(aes(x=Gender,y=MeanIncome)) +
scale_y_continuous("Mean")+
geom_bar(stat = 'identity')+
facet_wrap(.~SES)输出:

或者,您可以避免使用小平面和使用fill变量显示绘图,如下所示:
#Code 2
df %>% group_by(SES,Gender) %>%
summarise(MeanIncome=mean(income,na.rm=T)) %>%
ggplot(aes(x=Gender,y=MeanIncome,fill=SES)) +
scale_y_continuous("Mean")+
geom_bar(stat = 'identity',position = position_dodge2(0.9,preserve = 'single'))输出:

https://stackoverflow.com/questions/63802077
复制相似问题