如何从R语言dataframe的字符串列中提取多个匹配的指定模式值
R 提取字符串列指定AOB模式内容的实现方法
以下两种方法都可以实现需求,可根据使用场景选择:
- 方法1:tidyverse生态常用的
stringr包方案
该方法代码简洁易读,是字符串处理的常用选择:
执行后查看结果:# 未安装包先执行 install.packages("stringr") library(stringr) # 匹配AOB加1到3的模式,提取结果存入新列 df$extract_res <- str_extract(df$string, "AOB[1-3]")> df id string extract_res 1 1 acv-32-AOB1 AOB1 2 2 osa-122-AOB2 AOB2 3 3 cds-543-rr-AOB3 AOB3 - 方法2:R基础包方案,无需安装额外依赖
适合不想额外安装第三方包的场景:# 匹配定位 pattern_pos <- gregexpr("AOB[1-3]", df$string) # 提取匹配内容 df$extract_res <- unlist(regmatches(df$string, pattern_pos))
注:如果每个字符串可能存在多个符合要求的匹配项,可将
str_extract替换为str_extract_all,gregexpr本身就支持多匹配提取。
内容的提问来源于stack exchange,提问作者amisos55
相关产品推荐
相关产品推荐

