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

在R语言中统计并合并含NA值的行的实现方法

解决方案

基础R实现

拆分数据分别处理后再合并结果:

# 保留var2非缺失的行
non_na_part <- df[!is.na(df$var2), ]

# 统计var2缺失的行数,生成汇总行
na_summary_row <- data.frame(var1 = "x", var2 = sum(is.na(df$var2)))

# 合并两部分数据
final_result <- rbind(non_na_part, na_summary_row)

final_result

运行后输出:

var1 var2
1    a    5
2    b   10
3    x    3

dplyr简洁实现

如果习惯用tidyverse工具链,可通过分组汇总完成:

library(dplyr)

df %>%
  # 将var2为NA的行的var1统一替换为"x"
  mutate(var1 = case_when(is.na(var2) ~ "x", TRUE ~ var1)) %>%
  # 按var1分组
  group_by(var1) %>%
  # 分组计算:非x组取原var2值,x组统计行数
  summarise(var2 = if_else(var1 == "x", n(), first(var2))) %>%
  ungroup()

原方法失效原因

你使用的aggregate(data=df,var2~.,na.rm = FALSE, FUN = sum)仅返回a和b的结果,原因在于:

  • aggregate默认会排除包含NA的分组;
  • 即便设置na.rm=FALSE,对NA值求和的结果仍是NA,这类结果不会被保留。而你的需求是统计NA的行数,而非对NA求和,因此需要换用统计行数的逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 07:24:12