使用readr::parse_number提取带前导零数字的问题
保留前导零提取字符串中的数字
readr::parse_number会将提取到的内容转换为数值类型,自然会丢失前导零。要保留前导零,需要直接提取字符串形式的数字片段,推荐用正则表达式实现:
方法1:使用stringr包(tidyverse生态)
library(stringr) str_extract("thankyouverymuch02", "\\d+") #> [1] "02"
方法2:使用base R原生函数
regmatches("thankyouverymuch02", regexpr("\\d+", "thankyouverymuch02")) #> [1] "02"
如果字符串包含多段数字,想要全部提取,可改用以下方式:
# stringr包 str_extract_all("abc03def123ghi007", "\\d+")[[1]] #> [1] "03" "123" "007" # base R regmatches("abc03def123ghi007", gregexpr("\\d+", "abc03def123ghi007"))[[1]] #> [1] "03" "123" "007"
内容的提问来源于stack exchange,提问作者captcoma
相关产品推荐
相关产品推荐

