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

如何从多列data.frame中删除含-1/8缺失值的行

这里有两种高效的方法,不用逐列处理就能删掉所有包含-1或8的行:

方法一:Base R 原生实现(无需额外安装包)

# 定义代表缺失值的数值
missing_values <- c(-1, 8)

# 筛选出没有任何缺失值的行
df_clean <- df[rowSums(sapply(df, function(col) col %in% missing_values)) == 0, ]

原理:sapply(df, ...)遍历每一列,生成一个逻辑矩阵标记每个元素是否为缺失值;rowSums()计算每行的缺失值数量,保留数量为0的行(即完全无缺失值的行)。

方法二:用dplyr包(代码更简洁易读)

如果你常用tidyverse工具链,这种写法更直观:

library(dplyr)

df_clean <- df %>%
  filter_all(all_vars(!(. %in% c(-1, 8))))

原理:filter_all(all_vars(...))要求所有列都满足「值不在-1和8范围内」的条件,自动过滤掉任何包含缺失值的行。

拿你的示例数据测试,处理后会保留Andrea、Micheal、Xien这三行——其余行都包含-1或8的缺失值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 07:45:49