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

R中筛选数据框行时保留缺失值的问题及解决方法

解决R数据框筛选问题:保留E<0和NA的行

你的代码中判断NA的方式错误——R里的NA是缺失值,不是字符串"NA",用dd_sub$E == "NA"永远得不到TRUE,再加上which()会自动忽略NA值,导致这个条件完全没生效,最终只筛选出了E<0的行。

下面是几种正确的实现方式:

基础R写法

直接用逻辑索引结合is.na()判断缺失值,这是最直接的方式:

dd_subset <- dd_sub[dd_sub$E < 0 | is.na(dd_sub$E), ]

如果一定要用which(),修正判断逻辑即可:

dd_subset <- dd_sub[which(dd_sub$E < 0 | is.na(dd_sub$E)), ]

(注:基础R中行索引可以直接用逻辑向量,which()不是必须的)

tidyverse/dplyr风格写法

如果习惯用tidyverse工具,代码可读性更强:

library(dplyr)
dd_subset <- dd_sub %>% 
  filter(E < 0 | is.na(E))

反向筛选思路

也可以通过排除E>0的行来达到目的,逻辑上更直观:

# 排除所有明确大于0的行,保留NA和小于0的行
dd_subset <- dd_sub[!(dd_sub$E > 0 & !is.na(dd_sub$E)), ]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 16:57:30