R在催眠后的字符串中填充0
我有以下数据R在催眠后的字符串中填充0,r,regex,string,R,Regex,String,我有以下数据 GT_BUC-01_BUCST-19 ADT_BURC-1_BUCST-09 BT_BUDDC-1_BUDSCST-29 CAST_BUC-31_BUCST-9 CAST_BUC-1_BUCST-9 如何使用R使两个连字符后面的数字填充前导零,使其具有两个数字?生成的格式应如下所示: GT_BUC-01_BUCST-19 ADT_BURC-01_BUCST-09 BT_BUDDC-01_BUDSCST-29 CAST_BUC-31_BUCST-09 CAST_BUC-01_BUC
GT_BUC-01_BUCST-19
ADT_BURC-1_BUCST-09
BT_BUDDC-1_BUDSCST-29
CAST_BUC-31_BUCST-9
CAST_BUC-1_BUCST-9
如何使用R使两个连字符后面的数字填充前导零,使其具有两个数字?生成的格式应如下所示:
GT_BUC-01_BUCST-19
ADT_BURC-01_BUCST-09
BT_BUDDC-01_BUDSCST-29
CAST_BUC-31_BUCST-09
CAST_BUC-01_BUCST-09
您可以按如下方式尝试使用gsub:
x <- gsub("-(\\d)(?!\\d)", "-0\\1", x, perl=TRUE)
x
[1] "GT_BUC-01_BUCST-19" "ADT_BURC-01_BUCST-09" "BT_BUDDC-01_BUDSCST-29"
[4] "CAST_BUC-31_BUCST-09" "CAST_BUC-01_BUCST-09"
数据:
此处使用的正则表达式模式仅与后跟单个数字的破折号匹配。在这种情况下,我们将通过在这个数字前加一个零来进行替换。您可以尝试使用gsub,如下所示:
x <- gsub("-(\\d)(?!\\d)", "-0\\1", x, perl=TRUE)
x
[1] "GT_BUC-01_BUCST-19" "ADT_BURC-01_BUCST-09" "BT_BUDDC-01_BUDSCST-29"
[4] "CAST_BUC-31_BUCST-09" "CAST_BUC-01_BUCST-09"
数据:
此处使用的正则表达式模式仅与后跟单个数字的破折号匹配。在这种情况下,我们通过在这个数字前加一个零来替换。一个选项是使用stringr::str_replace_all
一种选择是使用stringr::str_替换所有
我已经尝试过解决方案,但我无法找出如何为我的问题更改它以及它到底在做什么?我已经尝试过解决方案,但我无法找出如何为我的问题更改它以及它到底在做什么?如果我有BUC6-01刺痛,我想要这个结果BUC06-01,我们将如何实施它?一般来说:gsub?很高兴帮助您!如果我有BUC6-01刺痛,并且我想要这个结果BUC06-01,我们将如何实现它?一般来说:gsub?很高兴帮助您!
x <- c('GT_BUC-01_BUCST-19', 'ADT_BURC-1_BUCST-09',
'BT_BUDDC-1_BUDSCST-29', 'CAST_BUC-31_BUCST-9', 'CAST_BUC-1_BUCST-9')
stringr::str_replace_all(x, '\\d+', function(m) sprintf('%02s', m))
#[1] "GT_BUC-01_BUCST-19" "ADT_BURC-01_BUCST-09"
#[3] "BT_BUDDC-01_BUDSCST-29" "CAST_BUC-31_BUCST-09"
#[5] "CAST_BUC-01_BUCST-09"