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

在R语言中提取逗号间含ENS的字符串并新增列的方法

提取含指定字符串的逗号分隔子串方法

这里有几种实用的实现方法,帮你给数据框新增列B:

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

直接用原生函数组合搞定,不用装额外包:

df$B <- sapply(strsplit(df$A, ","), function(x) x[grepl("ENS", x)])

逻辑很直白:先用strsplit把每行的A列按逗号拆成字符向量,再用grepl找出向量里包含"ENS"的元素,最后通过sapply把结果整合回数据框。

方法二:tidyverse工具链(代码更直观)

借助dplyr和stringr的组合,用匹配提取一步到位:

library(dplyr)
library(stringr)

df <- df %>%
  mutate(B = str_extract(A, "[^,]*ENS[^,]*"))

str_extract的匹配模式[^,]*ENS[^,]*意思是:匹配所有不包含逗号、且中间带有"ENS"的子串,刚好对应你要的逗号分隔单元。

方法三:拆分-过滤-合并(适合多匹配场景)

如果某行可能存在多个含"ENS"的子串,这种方法更灵活:

library(tidyr)
library(dplyr)

df <- df %>%
  mutate(row_id = row_number()) %>% # 给每行加唯一标识
  separate_rows(A, sep = ",") %>% # 把逗号分隔的内容拆成多行
  filter(grepl("ENS", A)) %>% # 筛选含"ENS"的行
  select(row_id, B = A) %>% # 重命名列并保留行标识
  right_join(df %>% mutate(row_id = row_number()), by = "row_id") %>% # 合并回原数据框
  select(-row_id) # 移除临时行标识

这种方法步骤稍多,但能处理一行多个匹配结果的情况,结果会自动按行对齐。

内容的提问来源于stack exchange,提问作者Gabriel G.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 20:22:37