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

如何从AB前缀字符串片段中提取AB与-间的4位数字至独立列?

提取AB与短横线间4位数字的几种方法

先拿示例数据演示操作:

library(dplyr)
library(tidyr)
library(stringr)

# 模拟你的数据
df <- tibble(
  code = c("AB1997-147", "AB1997-150", "AB2000-001")
)

方法1:一步到位用extract提取

不用先拆分,直接通过正则分组提取目标数字,最省心:

df %>%
  extract(
    code, 
    into = "target_year",  # 新列的名字
    regex = "AB(\\d{4})-.*",  # 括号里的\\d{4}就是要抓的4位数字
    remove = FALSE  # 保留原code列,方便核对
  )

正则说明:AB匹配固定前缀,(\\d{4})捕获4位数字作为提取内容,-.*匹配后面的短横线及剩余部分。

方法2:基于已拆分的ABxxxx列处理

如果你已经用separate拆分出了类似ABxxxx的列(比如叫prefix),可以用两种方式分离数字:

方式A:用str_extract抓取数字

# 先拆分出prefix列(模拟你已经完成的步骤)
df_split <- df %>%
  separate(code, into = c("prefix", "suffix"), sep = "-", remove = FALSE)

# 从prefix里提取4位数字
df_split %>%
  mutate(target_year = str_extract(prefix, "\\d{4}"))

方式B:用separate按AB位置拆分

用正向零宽断言,在AB后面拆分,不用硬编码长度:

df_split %>%
  separate(
    prefix, 
    into = c("ab_prefix", "target_year"), 
    sep = "(?<=AB)",  # 意思是:在AB后面的位置拆分
    remove = FALSE
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 07:17:09