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

如何在R语言中提取字符串括号内内容及Form_Number后的数值?

在R中提取字符串特定内容并新增列的实现方法

原始数据集

data <- data.frame(id = c(1,2),
                  text = c("GK_Conciencia fonologica (FSS)_Form_Number_1.csv",
                           "G1_Conciencia fonologica (FSL)_Form_Number_3.csv"))

需求说明

需要从text列中提取两类信息并新增列:

  • 提取括号内的文本,存入cat列
  • 提取Form_Number_后的数值,存入form列

实现方法

方法一:Base R 原生实现

利用regmatches配合正则表达式完成提取,无需额外安装包:

# 提取括号内的文本并去除括号
data$cat <- regmatches(data$text, regexpr("\\((.*?)\\)", data$text)) |> 
  gsub(pattern = "\\(|\\)", replacement = "")

# 提取Form_Number后的数字并转换为整数
data$form <- regmatches(data$text, regexpr("Form_Number_(\\d+)", data$text)) |> 
  gsub(pattern = "Form_Number_", replacement = "") |> 
  as.integer()

方法二:tidyverse + stringr 简洁实现

如果习惯使用tidyverse生态,可以用stringr包的断言正则直接提取目标内容:

library(tidyverse)

data <- data |> 
  mutate(
    # 用正向断言匹配括号之间的内容
    cat = str_extract(text, "(?<=\\().*?(?=\\))"),
    # 匹配Form_Number_后的数字并转为整数
    form = str_extract(text, "(?<=Form_Number_)\\d+") |> as.integer()
  )

最终结果

运行上述任意方法后,数据集将变为:

id                                             text  cat form
1  1 GK_Conciencia fonologica (FSS)_Form_Number_1.csv FSS   1
2  2 G1_Conciencia fonologica (FSL)_Form_Number_3.csv FSL   3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 00:20:30