gpt4 book ai didi

r - 如何获得具有按因子分组的多个变量的条形图

转载 作者:行者123 更新时间:2023-12-03 08:54:15 27 4
gpt4 key购买 nike

我的数据集如下所示。我正在尝试使用分组变量gender绘制条形图,所有变量在x轴上并排(按性别分组,以不同颜色填充),并在y轴上显示变量的平均值(基本上代表百分比)

tea                coke            beer             water           gender
14.55 26.50793651 22.53968254 40 1
24.92997199 24.50980392 26.05042017 24.50980393 2
23.03732304 30.63063063 25.41827542 20.91377091 1
225.51781276 24.6064623 24.85501243 50.80645161 1
24.53662842 26.03706973 25.24271845 24.18358341 2

最后我想得到一个这样的图

有什么建议怎么做?我进行了一些搜索,但仅找到x轴上因子的示例,而不是按因子分组的变量的示例。任何帮助将不胜感激!

最佳答案

您可以使用汇总来计算均值:

means<-aggregate(df,by=list(df$gender),mean)
Group.1 tea coke beer water gender
1 1 87.70171 27.24834 24.27099 37.24007 1
2 2 24.73330 25.27344 25.64657 24.34669 2

摆脱Group.1列
means<-means[,2:length(means)]

然后,将数据重新格式化为长格式:
library(reshape2)
means.long<-melt(means,id.vars="gender")
gender variable value
1 1 tea 87.70171
2 2 tea 24.73330
3 1 coke 27.24834
4 2 coke 25.27344
5 1 beer 24.27099
6 2 beer 25.64657
7 1 water 37.24007
8 2 water 24.34669

最后,您可以使用ggplot2创建图:
library(ggplot2)
ggplot(means.long,aes(x=variable,y=value,fill=factor(gender)))+
geom_bar(stat="identity",position="dodge")+
scale_fill_discrete(name="Gender",
breaks=c(1, 2),
labels=c("Male", "Female"))+
xlab("Beverage")+ylab("Mean Percentage")

关于r - 如何获得具有按因子分组的多个变量的条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22305023/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com