我正在尝试制作一张图表,显示按性别种族划分的平均年龄。图表本身应以最低平均年龄到最高平均年龄的顺序显示此信息,并按总体性别分组。
我正在根据按工作类别,性别/种族,性别和平均年龄分组的数据集进行工作。我已经可以使用以下代码按性别成功订购此商品:
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,具体取决于上面代码中的genXrce安排,包括重新设置,变异和重新排序。
我的问题是:如何以ggplot2生成图表的方式对数据进行重新排序/排列,该图表以与生成的表格相同的方式给出按性别分组的上升平均值?任何建议,不胜感激。
编辑1: 在下面的评论中,建议使用forcats或类似的功能通过ggplot安排图表。像这样的例子:
ggplot(data = rsltProf, mapping = aes(x =fct_reorder(!!as.name(genXrce), avg), y = avg, fill = genXrce))
但是,这将平均排列所有genXrce因子,并且不再按性别分开。需要明确的是,油印顺序应与表格相同->女白,女黑,女其他,女亚洲,男白,男黑....