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

如何在R中删除tibble中CSO=1且DateStartRole为NA的行?

正确删除目标行的方法

你的代码存在两个关键问题:

  • 错误用字符串判断缺失值:DateStartRole!="NA"是在判断单元格内容是否为字符串"NA",但tibble里的缺失值是原生NA,必须用is.na()函数检测。
  • 逻辑条件错误:原代码用&(且)连接两个条件,要求同时满足「DateStartRole不是NA」和「CSO不等于1」,这会直接删掉所有CSO=1的行,不管DateStartRole是否有值,不符合你的需求。

正确逻辑是仅排除同时满足CSO=1且DateStartRole为NA的行,也就是保留「CSO不等于1」或者「DateStartRole不是NA」的行。以下是几种可行写法:

用base R的subset函数

# 取反写法:直接排除目标行
test <- subset(refinitiv_boardex, !(CSO == 1 & is.na(DateStartRole)))

# 等价的逻辑或写法:保留符合任一条件的行
test <- subset(refinitiv_boardex, CSO != 1 | !is.na(DateStartRole))

用dplyr包的filter(更适配tibble操作)

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

library(dplyr)
test <- refinitiv_boardex %>%
  filter(!(CSO == 1 & is.na(DateStartRole)))

# 或者逻辑或版本
test <- refinitiv_boardex %>%
  filter(CSO != 1 | !is.na(DateStartRole))

以上写法都会精准删除你指定的目标行,其余行全部保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 17:57:14