r - R ggplot2 将几个分类变量的闪避条形图除以一个带有百分比的因子
问题描述
我有以下结构的数据框
var1 <- c(0,1,0,1,1,0,1,1,0,1,1,1,1,1,1)
var2 <- c(0,0,1,1,0,0,1,1,0,1,0,0,1,1,0)
var3 <- c(1,1,1,0,1,0,1,0,0,1,1,1,1,0,1)
var4 <- c(1,0,0,0,1,0,1,1,0,0,1,1,1,0,1)
var5 <- c(1,0,0,1,0,1,1,0,0,0,1,1,1,1,1)
var6 <- c(0,0,1,0,1,0,1,1,1,1,0,0,0,0,0)
group <- c(0,0,0,0,0,0,0,1,1,1,1,1,1,1,1)
numb <- 1:15
df <- data.frame(numb,group,var1,var2,var3,var4,var5,var6)
df$var1 <- factor(df$var1)
df$var2 <- factor(df$var2)
df$var3 <- factor(df$var3)
df$var4 <- factor(df$var4)
df$var5 <- factor(df$var5)
df$var6 <- factor(df$var6)
df$group <- factor(df$group)
summary(df)
numb group var1 var2 var3 var4 var5 var6
Min. : 1.0 0:7 0: 4 0:8 0: 5 0:7 0:6 0:9
1st Qu.: 4.5 1:8 1:11 1:7 1:10 1:8 1:9 1:6
Median : 8.0
Mean : 8.0
3rd Qu.:11.5
Max. :15.0
我想制作所有这些变量除以组因子的组合闪避条形图。
我现在设法做的是一个条形图,其中原始数据帧中的数据在长格式的帮助下输入到一个新帧中 reshape2
df_long <- reshape2::melt(df, measure.variables = c("var1","var2","var3","var4","var5","var6"), id.vars = c("group","numb"))
然后我计算观察变量的百分比
library(dplyr)
df_pct <- df_long %>%
count(value, group, variable) %>%
mutate(pct = prop.table(n))
并绘制图表ggplot2
ggplot(data = df_pct, aes(x = variable, y = pct, fill = group, label = scales::percent(pct))) +
geom_col(position = 'dodge') +
geom_text(position = position_dodge(width = .9), # move to center of bars
vjust = -0.5, # nudge above top of bar
size = 3)+
scale_y_continuous(labels = scales::percent)
但是我得到的图片显然与它显示的百分比有问题。我期望图表仅在df[df$var* == 1, ]
(变量存在)时计算案例。我不确定我的示例中的条数是多少,它清楚地显示了df[df$var* == 1, ]
和df[df$var* == 0, ]
(变量不存在)的百分比
可以请任何人帮忙绘制图表吗?我需要做什么才能正确显示百分比?如何绘制图表以便仅计算变量的“1”值?
解决方案
推荐阅读
- ios - 向模型对象添加错误是个好主意吗?
- apache-kafka - 如何处理 UnkownProducerIdException
- postgresql - 使用 POSTGIS 操作制作有效的大几何图形
- javascript - 静态下拉菜单在 Bootstrap 中不起作用
- amazon-web-services - 如何使用 terraform 在 LocalStack 上创建 EC2 实例?
- reactjs - 期望一个组件被渲染
- gradle - 如何在各种情况下将 Maven (Nexus) 凭据传递给 build.gradle 文件?
- node.js - 我无法导入没有错误的模块
- python - argparse:str 对象没有属性
- python - 如何在 Julia 中替换使用 python 的属性