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

如何在R语言中筛选多列含特定字符串(CTX-M)的DataFrame行

筛选包含"CTX-M"的样本行方法

针对你构建的这个DataFrame,我给你两种常用的实现方式,你可以根据自己的习惯选择:

方法一:Base R 原生实现

这种方法不需要额外安装包,直接用base R的函数就能搞定:

# 筛选条件:检查每行的bla_1/bla_2/bla_3列中是否存在"CTX-M"
filtered_df <- df[rowSums(df[, c("bla_1", "bla_2", "bla_3")] == "CTX-M", na.rm = TRUE) > 0, ]

代码解释:

  • df[, c("bla_1", "bla_2", "bla_3")] == "CTX-M":生成一个布尔矩阵,对应位置如果是"CTX-M"就返回TRUE,否则FALSE(NA会被保留为NA)
  • rowSums(..., na.rm = TRUE):对每行的布尔值求和(TRUE计为1,FALSE计为0),na.rm = TRUE用来忽略NA值,避免求和结果变成NA
  • 最后用> 0判断每行是否至少有一个"CTX-M",筛选出符合条件的行

方法二:用dplyr包(tidyverse风格)

如果你习惯用tidyverse系列的工具,dplyr的写法会更直观:
首先确保你已经安装并加载了dplyr:

install.packages("dplyr")
library(dplyr)

然后执行筛选:

filtered_df <- df %>%
  filter(if_any(starts_with("bla"), ~ .x == "CTX-M"))

代码解释:

  • starts_with("bla"):自动选中所有列名以"bla"开头的列(也就是bla_1、bla_2、bla_3),如果后续列名有变化,这个写法也能自动适配
  • if_any(..., ~ .x == "CTX-M"):检查选中的列中是否任意一列满足等于"CTX-M"的条件,只要有一列满足就保留该行

两种方法最终得到的结果都是保留样本A、B、C、D这四行,样本E会被过滤掉。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 16:42:34