You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 10:54:02