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

在R语言中按条件替换数值的前两位数字

识别码前两位替换(保留后五位)解决方案

这里给你两种实用的方法,按需选择:

方法1:字符串替换(直观易懂)

把识别码转成字符串后,替换开头两位为"35",再转回数值类型,base R或stringr包都能实现:

Base R 写法

# 先给数据框列命名,方便后续操作
names(df) <- "id"
# 执行替换
df$id <- as.numeric(sub("^\\d{2}", "35", as.character(df$id)))
  • as.character(df$id):把数值型的识别码转成字符串
  • sub("^\\d{2}", "35", ...):用正则匹配字符串开头的两位数字,替换成"35"
  • as.numeric():把处理后的字符串转回数值类型

stringr 包写法(更简洁)

如果常用tidyverse工具,用stringr的str_replace更省心:

library(stringr)
names(df) <- "id"
df$id <- as.numeric(str_replace(as.character(df$id), "^..", "35"))

^..是简化的正则,匹配开头任意两个字符,直接替换成"35",逻辑和base R一致。

方法2:数值运算(高效无类型转换)

如果你的识别码都是固定7位数字,用数值计算更高效,不用来回转换类型:

names(df) <- "id"
df$id <- 3500000 + (df$id %% 100000)
  • df$id %% 100000:取识别码的后五位(对100000取模,刚好保留最后五位)
  • 3500000:对应"35"开头的前两位数值,加上后五位就得到目标识别码

两种方法都能完美把3400808变成3500808,3400809变成3500809,完全满足你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 16:22:07