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

在R中按年和月分组统计多列NA值并绘制柱状图

R语言按年月分组统计多列缺失值并可视化

步骤1:加载依赖包

我们会用到dplyr做数据处理、lubridate处理日期、ggplot2绘图,先加载这些包:

library(dplyr)
library(lubridate)
library(ggplot2)

步骤2:预处理日期数据

先把Date列转换为标准日期格式,再提取年份和月份(用月份缩写更易读):

b <- b %>%
  mutate(Date = ymd(Date),
         Year = year(Date),
         Month = month(Date, label = TRUE, abbr = TRUE))

步骤3:按年月分组统计缺失值

用group_by按年、月分组,再通过across批量统计每列的NA数量:

# 生成宽格式统计表格
na_stats <- b %>%
  group_by(Year, Month) %>%
  summarise(across(AAA:EEE, ~sum(is.na(.)), .names = "NA_{.col}"))

# 查看结果
print(na_stats)

输出的na_stats就是你需要的统计表格,每行对应一个年月,每列对应原数据列的缺失值数量。

步骤4:转换数据格式(用于绘图)

把宽格式数据转为长格式,方便后续绘制分组柱状图:

na_stats_long <- na_stats %>%
  pivot_longer(cols = starts_with("NA_"),
               names_to = "Variable",
               values_to = "NA_Count",
               names_prefix = "NA_")

步骤5:绘制缺失值统计柱状图

用ggplot2绘制分面柱状图,清晰展示每个年月各变量的缺失值情况:

ggplot(na_stats_long, aes(x = Variable, y = NA_Count, fill = Variable)) +
  geom_col(position = "dodge") +
  facet_wrap(~paste(Year, Month, sep = "-")) +
  labs(title = "各变量每月缺失值数量统计",
       x = "变量",
       y = "缺失值数量") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

示例输出说明

针对你提供的示例数据,统计结果会显示1999年12月各变量的NA数:

  • AAA:3个
  • BBB:0个
  • CCC:1个
  • DDD:1个
  • EEE:0个

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 11:42:55