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

如何基于含缺失值的DataFrame绘制排除缺失行的均值柱状图

解决方法

方法一:使用tidyverse工具链(dplyr + ggplot2)

这是R中数据处理和可视化的常用组合,代码可读性高且灵活:

  1. 加载所需包
library(dplyr)
library(ggplot2)
library(tidyr)
  1. 还原你的数据集
df <- structure(list(id = c("id1", "test", "rew", "ewt"), 
                     total_frq_1 = c(54, 87, 10, 36), 
                     total_frq_2 = c(45, 24, 202, 43), 
                     total_frq_3 = c(24, NA, 25, 8), 
                     total_frq_4 = c(36, NA, 104, NA)), 
                row.names = c(NA, 4L), class = "data.frame")
  1. 计算各列均值(自动排除缺失值)
    先剔除id列,再批量计算每列的均值,最后把宽格式数据转为长格式(适配ggplot2的绘图逻辑):
mean_stats <- df %>%
  select(-id) %>%
  summarise(across(everything(), ~mean(., na.rm = TRUE))) %>%
  pivot_longer(cols = everything(), names_to = "列名", values_to = "均值")
  1. 绘制柱状图
ggplot(mean_stats, aes(x = 列名, y = 均值)) +
  geom_col(fill = "#4A90E2") +
  labs(title = "各列均值柱状图", x = "数据列", y = "均值") +
  theme_bw()

方法二:基础R实现

如果不想加载额外包,用基础R也能完成:

  1. 计算各列均值
    直接用colMeans函数,na.rm = TRUE参数会自动忽略缺失值:
col_means <- colMeans(df[, -1], na.rm = TRUE)
  1. 绘制柱状图
    用基础R的barplot函数:
barplot(col_means, 
        names.arg = names(col_means),
        main = "各列均值柱状图",
        xlab = "数据列",
        ylab = "均值",
        col = "#4A90E2")

两种方法计算出的结果完全符合要求:比如total_frq_3的均值为19,total_frq_4的均值为70。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 08:30:55