我有一个专栏如下。
9453、55489、4588、18893、4457、2339、45489HQ、7833HQ
如果数字少于 5 位,我想添加前导零。然而,有些号码最后有“HQ”,有些没有。(我确实检查了其他帖子,他们在“HQ”部分没有类似的问题)
所以最终想要的输出应该是:
09453、55489、04588、18893、04457、02339、45489HQ、07833HQ
知道怎么做吗?非常感谢您阅读我的帖子!
使用正则表达式的单行:
my_strings <- c("9453", "55489", "4588",
"18893", "4457", "2339", "45489HQ", "7833HQ")
gsub("^([0-9]{1,4})(HQ|$)", "0\\1\\2",my_strings)
[1] "09453" "55489" "04588" "18893"
"04457" "02339" "45489HQ" "07833HQ"
解释:
^ start of string
[0-9]{1,4} one to four numbers in a row
(HQ|$) the string "HQ" or the end of the string
括号按顺序表示捕获组。所以0\\1\\2
means 0
接下来是第一个捕获组[0-9]{1,4}
和第二个捕获组HQ|$
.
当然,如果有 5 个数字,则正则表达式不匹配,因此它不会改变。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)