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

R语言无分隔符列拆分:如何提取末尾两位数字外的前缀编码

R语言拆分混合编码列的解决方案

核心思路是通过正则锚定字符串末尾的两位数字,不需要固定前缀长度即可完成拆分。

适配任意长度前缀的extract写法

你只需要修改extract函数的正则规则即可:

# 需先加载tidyr包,若使用tidyverse合集可直接加载tidyverse
library(tidyr)

df <- data.frame(code=rep(c('2d01', '2m04', '3C06', 'CrD05'), each=10),
                 pos=rep(c(3, 7,2,4), times=20))

df <- extract(df, code, into = c("code","number"),
              regex = "(.*)(\\d{2})$")

正则规则说明

  • (.*):第一个捕获组,匹配末尾两位数字之前的所有内容,适配任意长度的编码前缀
  • (\\d{2})$:第二个捕获组,\\d{2}匹配两位数字,$将匹配位置锚定在字符串末尾,保证只会提取最后两位的数字作为number列
    拆分后CrD05会被拆分为CrD(code列)和05(number列),其余短前缀的编码也可正常拆分。

可选实现(基于dplyr+stringr)

如果你更习惯用字符串提取的显式写法,也可以用如下代码实现相同效果:

library(tidyverse)

df <- df %>%
  mutate(
    number = str_extract(code, "\\d{2}$"),
    code = str_remove(code, "\\d{2}$")
  )

内容的提问来源于stack exchange,提问作者Gonzalo de Quesada

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:15:05