R语言如何计算列表中各DataFrame按年月分组的变量NA值占比
R 按年+月分组统计多数据框各变量缺失占比实现方案
核心调整点
原有代码仅按month单独分组,没有加入year实现年月联合分组,且统计的是每行总缺失数,不符合「每个变量单独统计缺失占比」的需求,调整方案如下:
完整实现代码
library(tidyverse) # 遍历所有站点数据框,按年+月统计各变量缺失占比,最终合并为单个数据框 na_year_month_stats <- imap_dfr(estaciones, function(df, site_name) { df %>% # 保留分组字段+需要统计的观测变量 select(year, month, Tx2m, Tn2m, Pr) %>% # 按年+月联合分组 group_by(year, month) %>% # 批量统计三个变量的缺失数量、缺失占比 summarise( across(c(Tx2m, Tn2m, Pr), list( na_count = ~sum(is.na(.x)), na_pct = ~round(mean(is.na(.x)) * 100, 2) # 保留两位小数的百分比 ), .names = "{.col}_{.fn}"), .groups = "drop" ) %>% # 新增站点名列,对应原列表中每个数据框的名称 mutate(site = site_name, .before = everything()) }) # 导出为本地csv文件 write_csv(na_year_month_stats, "各站点年月维度缺失值统计.csv")
输出说明
最终生成的csv文件字段如下:
- site:对应原列表中每个数据框的名称,例如
AeropuertodeBocas_93002 - year:统计年份
- month:统计月份
- Tx2m_na_count:Tx2m变量当月缺失条数
- Tx2m_na_pct:Tx2m变量当月缺失占比(单位%)
- Tn2m、Pr两个变量的统计字段规则同上
内容的提问来源于stack exchange,提问作者Adi
相关产品推荐
相关产品推荐

