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

如何在ggplot柱状图中排除缺失值并修正百分比计算?

解决方案:排除NA值的ggplot柱状图

没问题,要实现你想要的效果——既不在图表中显示缺失值,又让Y轴百分比基于排除缺失值后的有效数据——只需要在绘制图表前先过滤掉RF.Age列的NA观测值即可。下面是修改后的完整代码:

# 先加载所需包(未安装的话先运行install.packages(c("dplyr", "ggplot2", "scales")))
library(dplyr)
library(ggplot2)
library(scales)

ggplot(filter(RPSdata, !is.na(RF.Age)), aes(x = RF.Age)) +
  geom_bar(col="black", fill ="grey", alpha = .8) +
  aes(y = (..count..)/sum(..count..)) +
  scale_y_continuous(labels=percent) +
  labs(title="Risk Factor - Age", x ="Estimate", y="Proportion of Total") +
  theme(plot.title = element_text(hjust = 0.5)) +
  scale_x_discrete(labels = c("No", "Yes", "Not Sure")) # 移除原有的"Missing"标签

关键修改说明:

  • 数据过滤:通过filter(RPSdata, !is.na(RF.Age))直接在ggplot的数据源中剔除RF.Age为NA的行,这样后续所有统计计算(包括Y轴的百分比)都会基于不含缺失值的有效样本,百分比总和会是100%。
  • 标签调整:因为缺失值已经被过滤,所以去掉了scale_x_discrete里的"Missing"标签,避免出现无对应类别的空标签。

如果你不习惯使用dplyr,也可以用base R的subset函数替代过滤步骤:

ggplot(subset(RPSdata, !is.na(RF.Age)), aes(x = RF.Age)) +
  # 后续代码与上面完全一致

这样修改后,你的柱状图就只会展示有效分类,且百分比计算完全排除了缺失值的影响,和你原本满意的图表逻辑保持一致。

内容的提问来源于stack exchange,提问作者Mikey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:34:44