gpt4 book ai didi

R : find a pattern and edit

转载 作者:行者123 更新时间:2023-12-01 09:15:23 25 4
gpt4 key购买 nike

了解所有关于添加前导零的问题以及为他们提供的综合回答,例如Q1 , Q2 , Q3 .

但对我来说,至少根据我目前的知识,我无法解决我将要做的事情如下:

  • 使用 regex 模式匹配在 string 中添加 前导零因此,我只想在 - 之后将 leading zero 添加到 digits


例如:

Sam <- c("222-88", "537-457", "652-1", "787-892")
var <- LETTERS[1:4]
DF<- data.frame(Sam, var)
DF
Sam var
1 222-88 A
2 537-457 B
3 652-1 C
4 787-892 D

预期结果:

     Sam   var
1 222-088 A
2 537-457 B
3 652-001 C
4 787-892 D

我试过了:

library(stringr)
temp <- DF[str_detect(DF$Sam, "-[0-9]{1,2}$"),] # will find the rows need the leading zero
temp
Sam var
1 222-88 A
3 652-1 C

formatC(temp$Sam, width = 2,flag = 0)# not correct!

最佳答案

我们可以通过 base R 做到这一点, 通过 - 分割字符串然后使用 sprintf转换为 numeric 后填充 0然后 paste

DF$Sam <- sapply(strsplit(as.character(DF$Sam), "-"), function(x) 
paste(x[1],sprintf("%03d", as.numeric(x[2])), sep="-"))
DF$Sam
#[1] "222-088" "537-457" "652-001" "787-892"

如果我们需要正则表达式方法,我们可以使用 gsubfn

library(gsubfn)
gsubfn("(\\d+)$", ~sprintf("%03d", as.numeric(x)), as.character(DF$Sam))
#[1] "222-088" "537-457" "652-001" "787-892"

关于R : find a pattern and edit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45968557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com