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

如何按任意列中的指定字符串筛选dataframe行?

在R中筛选DataFrame任意列包含指定字符串的行

针对你给出的示例DataFrame,要筛选任意一列包含指定字符串(比如"ol")的行,这里提供两种常用实现方式:

示例数据

先还原你的测试数据:

col1<-c("sd fgg","df dfg","fgh gdfg")
col2<-c("sd fgg","df dgfg","fgh gdfg")
col3<-c("sd fggg","dfg dfgg","fgghol gdfg")
df<-data.frame(col1,col2,col3)

方法一:Base R 实现

利用apply逐行遍历所有列,结合grepl检查字符串是否存在,最后通过rowSums判断该行是否满足条件:

# 筛选任意列包含"ol"的行
filtered_df <- df[rowSums(apply(df, 1, function(row) grepl("ol", row))) > 0, ]

说明:

  • apply(df, 1, ...):按行处理DataFrame的每一行数据
  • grepl("ol", row):检查当前行的每个元素是否包含"ol",返回布尔值向量
  • rowSums(...) > 0:只要该行有一个元素符合条件,结果就为TRUE,以此筛选出目标行

方法二:tidyverse 实现

如果习惯用tidyverse工具包,dplyr中的if_any函数可以更简洁地完成需求:

library(dplyr)

filtered_df <- df %>% 
  filter(if_any(everything(), ~ grepl("ol", .x)))

说明:

  • everything():指定要检查DataFrame的所有列
  • if_any(..., ~ grepl("ol", .x)):只要任意一列满足grepl("ol", .x)的条件,就保留该行

运行上述任意一种方法,最终都会得到仅包含第三行的筛选结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 19:30:53