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

R语言中为dataframe数字列第3位后插入小数点的实现问题

错误原因

你之前使用的正则表达式([0-9])仅捕获单个数字,且替换规则中引用的\\2/\\3/\\4都属于不存在的捕获组,所以匹配到每一个数字都会自动追加小数点,才会得到不符合预期的输出。

正确实现方案

我们可以通过正则捕获前3位数字和后续剩余数字,只在两组之间插入小数点即可,代码如下:

# 示例数据
a <- data.frame(id=c(1,2,2,2,3),icd9=c("0781","00840","8660","7100","25011"))

# 正确替换逻辑
a$icd9 <- sub(pattern = "^(\\d{3})(\\d+)$", replacement = "\\1.\\2", x = a$icd9)

# 查看结果
print(a)

运行后输出结果和你预期完全一致:

id   icd9
1  1  078.1
2  2 008.40
3  2  866.0
4  2  710.0
5  3 250.11

补充说明

这里使用sub而不是gsub即可,因为每个icd9字符串只需要执行一次替换操作,不需要全局匹配替换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:57:02