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

在R中如何逐行标记、统计缺失值?以airquality数据集为例

原有代码错误原因

你的for循环逻辑存在两个核心问题:

  • 没有按行索引读取和赋值:is.na(df_test$Ozone)返回的是整个Ozone列的布尔向量,if判断仅会读取向量第一个值,全局逻辑失效
  • 赋值操作直接作用于整列:df_test$Missing_Ozone <- 1会直接把整列设为1,不是修改对应行的取值,因此最终结果不符合预期

实现方案

基础R实现(无需安装额外包)

library(MASS)
df_test <- airquality

# 标记Ozone列是否缺失
df_test$Missing_Ozone <- as.integer(is.na(df_test$Ozone))
# 统计每行总缺失值数量
df_test$Missing_Total <- apply(df_test, 1, function(x) sum(is.na(x)))
# 计算行缺失值占比
df_test$Missing_Percent <- 100 * df_test$Missing_Total / ncol(airquality)

tidyverse风格实现(dplyr)

library(MASS)
library(dplyr)

df_test <- airquality %>%
  mutate(
    Missing_Ozone = as.integer(is.na(Ozone)),
    Missing_Total = rowSums(is.na(across(everything()))),
    Missing_Percent = 100 * Missing_Total / ncol(.)
  )

执行后取前6行验证,和你给出的示例取值完全一致。

相关操作名称&搜索关键词

这类操作属于数据清洗环节下的缺失值探查/行级缺失值统计,搜索相关内容时可使用关键词:R 行缺失值计数、R 缺失值标记、R 按行统计缺失占比。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:24:03