如何解决如何仅从某些列中在R中创建分组条形图? 数据
我有一个看起来像的数据框
Role <- letters(1:3)
df <- data.frame(Role,Female1=c(1,4,2),Male1 = c(3,0),Female2 = c(3,5,3),Male2 = c(1,3,FemaleTotal = Female1+Female2,MaleTotal = Male1+Male2)
并要创建一个针对每个列类别(以本例为1和2),以Male,Female分组的barplot,并与Roles以及另一个仅包含总数的图进行堆叠。要只做总计,我可以使用melt()并将数据框子集化为仅包含那些列,但这似乎很杂乱,并且无法帮助我创建主要的图。
解决方法
一种选择是将其重塑为“长”格式
library(dplyr)
library(tidyr)
library(ggplot2)
df %>%
pivot_longer(cols = -Role,names_to = c( "group",'.value'),names_sep="(?<=[a-z])(?=(\\d+|Total))") %>%
pivot_longer(-c(Role,group)) %>%
ggplot(aes(x = Role,y = value,fill = group)) +
geom_col() +
facet_wrap(~ name)
-输出
数据
df <- structure(list(Role = c("a","b","c"),Female1 = c(1,4,2),Male1 = c(3,0),Female2 = c(3,5,3),Male2 = c(1,3,FemaleTotal = c(4,9,5),MaleTotal = c(4,0)),row.names = c(NA,-3L),class = c("tbl_df","tbl","data.frame"))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。