如何在R中绘制3水平x变量、二分类y占比的条形图并解决包加载报错
问题解决方法
报错原因
你遇到的报错是因为已安装的dplyr版本为0.8.3,而qdap包要求dplyr版本≥0.8.5才能正常加载。实际上你的绘图需求完全不需要用到qdap、igraph、gender这类多余的包,直接用dplyr+ggplot2即可实现,还能避免额外的依赖冲突。
实现代码
1. 加载必需包
library(dplyr) library(ggplot2)
2. 计算分组死亡占比
假设你的原始数据集FramFinal2017(1)包含肥胖/糖尿病状态、是否死亡两列,按分组计算死亡占比:
death_rate <- `FramFinal2017(1)` %>% group_by(`肥胖/糖尿病状态`) %>% summarise( 死亡占比 = sum(`是否死亡` == 1, na.rm = TRUE) / n(), .groups = "drop" )
3. 绘制目标条形图
ggplot(death_rate, aes(x = factor(`肥胖/糖尿病状态`), y = 死亡占比)) + geom_col(fill = "cornflowerblue", width = 0.7) + labs(x = "肥胖/糖尿病状态", y = "死亡个体占比") + theme_bw()
可选扩展:堆叠占比条形图
如果需要同时展示每个分组下的存活、死亡占比,可使用以下代码:
# 统计分组内各生存状态的占比 stack_data <- `FramFinal2017(1)` %>% group_by(`肥胖/糖尿病状态`, `是否死亡`) %>% summarise(count = n(), .groups = "drop") %>% group_by(`肥胖/糖尿病状态`) %>% mutate(占比 = count / sum(count)) %>% mutate(`是否死亡` = factor(`是否死亡`, levels = c(0,1), labels = c("存活", "死亡"))) # 绘制堆叠图 ggplot(stack_data, aes(x = factor(`肥胖/糖尿病状态`), y = 占比, fill = `是否死亡`)) + geom_col(position = "stack", width = 0.7) + labs(x = "肥胖/糖尿病状态", y = "个体占比", fill = "生存状态") + theme_bw()
内容的提问来源于stack exchange,提问作者Akshay Nathan
相关产品推荐
相关产品推荐

