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

简化R语言中ID值检测与替换的冗余代码

简化ID列数字提取的tidy风格方法

你需要从冗长的ID名称里提取连续数字替代原内容,不用写一堆重复的if_else,下面是几种高效的tidyverse解决方案:

方法1:正则提取数字(通用型)

不管ID前缀是什么,直接用正则匹配并提取连续数字,一步搞定:

library(tidyverse)

ID <- c('number04', 'number05', 'number06', 'number07', 'number08', 'number09', 'number10')
df <- tibble(ID)

# 提取所有连续数字
df_clean <- df |>
  mutate(ID = str_extract(ID, "\\d+"))

print(df_clean)

\\d+是正则表达式,专门匹配一个或多个连续数字,不管你的ID前缀是number还是其他字符串,都能准确提取出数字部分。

方法2:删除固定前缀(针对性)

如果所有ID的前缀都是固定的(比如这里的number),直接删除前缀更直观:

df_clean <- df |>
  mutate(ID = str_remove(ID, "number"))

这种方法代码更短,但只适用于前缀完全统一的场景。

方法3:提取数字并去除前导零(按需选择)

如果不需要保留前导零(比如把04转成4),可以用parse_number:

df_clean <- df |>
  mutate(ID = as.character(parse_number(ID)))

parse_number会自动提取字符串中的数值,转成字符型后就得到不带前导零的数字。

以上方法都只需要一次mutate操作,不管你有多少个不同的ID,都能一次性处理,彻底告别重复的替换代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 05:16:23