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

如何提取数据框列中括号内的文本?附R语言示例数据

提取DataFrame列中括号内的文本(R实现)

没问题,这就帮你搞定从Name列的括号里提取文本的需求,结合你的示例数据,这里有两种实用的R实现方法:

先确认你的示例数据框

首先把你提供的DataFrame代码整理成可直接运行的完整版本:

df <- structure(
  list(
    Name = c("Katie (5676W)", "John (2345G)", "Hex (4563W)", "Mike (4564R)"),
    Value = c(NA_character_, NA_character_, NA_character_, NA_character_)
  ),
  .Names = c("Name", "Value"),
  class = c("tbl_df", "tbl", "data.frame"),
  row.names = c(NA, -4L)
)

方法1:使用stringr包(tidyverse生态)

如果你习惯用tidyverse工具链,stringr包的正则函数非常直观:

library(stringr)

# 提取括号内文本并添加为新列Code
df$Code <- str_extract(df$Name, "\\((.*?)\\)") %>% 
  str_remove_all("\\(|\\)")
  • str_extract(df$Name, "\\((.*?)\\)"):匹配并提取带括号的内容(比如(5676W))
  • str_remove_all("\\(|\\)"):去掉前后的括号,得到纯文本

方法2:使用Base R(无需额外包)

如果不想加载额外包,Base R的sub函数就能完成,代码更简洁:

# 直接提取括号内文本到新列
df$Code <- sub(".*\\((.*?)\\).*", "\\1", df$Name)
  • 正则表达式.*\\((.*?)\\).*:匹配整个字符串,捕获括号内的内容为第1组
  • \\1:将整个字符串替换为第1组的内容,直接得到括号内的纯文本

最终结果

运行任意一种方法后,你的DataFrame会新增Code列,结果如下:

NameValueCode
Katie (5676W)NA5676W
John (2345G)NA2345G
Hex (4563W)NA4563W
Mike (4564R)NA4564R

注:如果你的数据中存在多个括号的情况,str_extract只会提取第一个括号的内容;若要提取所有括号内容,可以改用str_extract_all函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:59:17