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

如何提取R语言数据框中字符串变量的最后两位数字?

提取字符串末尾a后的数字最简方法

针对你这个需求,用正则表达式确实是最省心的方案,完美避开分隔符数量不固定的问题。这里有两种简洁的实现方式,base R和tidyverse风格都能满足:

Base R 方案(无需额外包)

直接用sub()函数配合正则,一步到位:

df$result <- as.numeric(sub(".*a(\\d+)$", "\\1", df$var1))

正则逻辑说明:

  • .*a:贪婪匹配字符串中最后一个"a"之前的所有内容,不管前面有多少个点或其他字符
  • (\\d+)$:捕获最后一个a后面的所有数字(\\d+表示一个或多个数字,$锚定字符串结尾,确保只取末尾的数字)
  • \\1:把整个字符串替换成捕获到的数字部分,最后用as.numeric()转换,没有匹配到的内容(比如"test")会自动转为NA

Tidyverse 方案(用stringr包)

如果习惯用tidyverse工具链,stringr::str_extract()写法更直观:

library(stringr)
df$result <- as.numeric(str_extract(df$var1, "(?<=a)\\d+$"))

正则逻辑说明:

  • (?<=a):正向预查,确保匹配的数字前面紧跟"a"
  • \\d+$:匹配字符串结尾的一个或多个数字
  • 同样用as.numeric()转换,无匹配项直接返回NA

运行后你的数据框会新增result列,结果完全符合预期:1, 2, 1, 2, 10, NA

内容的提问来源于stack exchange,提问作者D. Studer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 10:07:37