什么正则表达式函数有助于将数字添加到现有数字? [复制]
Posted
技术标签:
【中文标题】什么正则表达式函数有助于将数字添加到现有数字? [复制]【英文标题】:What regular expression function helps add a number to existing number? [duplicate] 【发布时间】:2021-09-19 18:33:11 【问题描述】:我的数据集中有一列包含一堆数字,长度为五个或六个数字,如下所示。但是,所有这些都需要六个数字。我拥有的数据集来自将多个 excel 组合在一起,五个长数字中的前导“0”在某些 excel 中消失了,但在其他中没有,所以我需要将它读到五个长数字中。所以我需要一个函数来找到任何长度为五个数字的数字,然后在开头添加一个 0,因此“49302”变成 049302”,但保留六个数字长的观察结果。关于如何使用 gsub 或其他函数的任何想法在大型数据集上执行此操作?
49302 038503 594030 39845 503932 334922 49403 84034
【问题讨论】:
【参考方案1】:x <- c(49302,038503,594030,39845,503932,334922,49403,84034)
df <-
tibble(x = x)
library(dplyr)
df %>%
mutate(x = if_else(nchar(x)==5,paste0(0,x),as.character(x)))
# A tibble: 8 x 1
x
<chr>
1 049302
2 038503
3 594030
4 039845
5 503932
6 334922
7 049403
8 084034
【讨论】:
【参考方案2】:我们可以使用sprintf
df1$col1 <- sprintf('%06d', as.numeric(df1$col1))
-输出
> df1
col1
1 049302
2 038503
3 594030
4 039845
5 503932
6 334922
7 049403
8 084034
或者,如果我们需要一个正则表达式,捕获从开头 (^
) 到结尾 ($
) 的 5 位数字并替换为 0 及其反向引用 (\\1
)
df1$col1 <- sub("^(.....)$", "0\\1", df1$col1)
df1$col1
[1] "049302" "038503" "594030" "039845" "503932" "334922" "049403" "084034"
数据
df1 <- data.frame(col1 = c(49302, 38503, 594030, 39845, 503932, 334922, 49403, 84034))
【讨论】:
以上是关于什么正则表达式函数有助于将数字添加到现有数字? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
可以将特定数字添加到一堆“时间”字符串中,在正则表达式中完成
使用 pyspark 中的正则表达式将数字添加到字符串中最后一个字符之前的字符串
将一个系列中的数字添加到同一数据框中的一系列字母,可能使用正则表达式