r - 重新排序分组变量中的因子,以便可以使用 ggplot2 按顺序绘制它
问题描述
我正在尝试制作一个图表,显示性别种族群体的平均年龄。图表本身应按平均年龄从最低平均年龄到最高平均年龄的顺序显示此信息,并按总体性别分组。
我正在处理按工作类别、性别/种族、性别和平均年龄分组的数据集。我已经能够使用以下代码按性别成功订购:
rsltProf = rslt %>%
filter(group == "Professionals" & avg > 0) %>%
group_by(gender) %>%
arrange(avg, .by_group = TRUE)
str(rsltProf$genXrce)
我得到以下输出:
group genXrce gender avg
1 Professionals Female-Asian Female 33.25397
2 Professionals Female-Other Female 37.55000
3 Professionals Female-White Female 39.89632
4 Professionals Female-Black Female 39.94118
5 Professionals Male-Other Male 32.80000
6 Professionals Male-Asian Male 37.86667
7 Professionals Male-Black Male 38.69767
8 Professionals Male-White Male 38.85294
Factor w/ 9 levels "Female-Asian",..: 4 2 3 1 9 7 8 6
太好了,这正是我想要的。但是,当我用 ggplot 绘制它时,它会产生以下结果:
显然,这是因为 ggplot2 是按因子的顺序而不是排列的数据框的顺序绘制图形的。根据上面代码中的排列方式,我尝试了多种方法来重新调整 genXrce,但无济于事,包括重新调整、变异和重新排序。
我的问题是:我如何重新排序/排列数据,以使 ggplot2 生成一个按性别分组的上升平均值的图表,就像我制作的表格一样?非常感谢任何建议。
编辑 1:在下面的评论中,建议使用 forcats 或类似的函数通过 ggplot 排列图形。像这样的一个例子:
ggplot(data = rsltProf, mapping = aes(x =fct_reorder(!!as.name(genXrce), avg), y = avg, fill = genXrce))
但是,这将平均安排所有 genXrce 因素,并且不再按性别分开。要清楚,条形图顺序应与表格相同->女性-白人,女性-黑色,女性-其他,女性-亚洲,男性-白色,男性-黑色...。
解决方案
推荐阅读
- zfit - 2 暗数据集的 zfit 直线拟合
- swiftui - 在 SwiftUI 中使用图层自定义 Mapbox 样式
- python - 如何将字符串基数 2 作为整数?
- spring-io - 无法访问 repo.spring.io - 未经授权
- vue.js - 在heroku中部署vue应用程序的问题
- python - CSS Selector 没有提取出我想要的数据
- java - 在java中实现一个JSON对象
- node.js - npm 错误!在 myfrontend@3.3.0 构建脚本中失败
- mysql - 将数据插入和更新到由外键链接的表中
- python - 查找具有 Null 值的列并将它们写入 Pyspark 中每条记录的新列中