我怎么能只给一个特定的值加一个零而不影响其他的值,如果它满足我的值有12位数的条件,我需要它有13位数,其他的10位数?
x=c(102030301,223456783,5234567123,916784443214)
if_else(x>=12, false = paste0("0",x),true = stringr::str_pad(x, 10, side = "left", pad = 0))
我尝试了这个代码,但它没有给予我预期的结果。
我想获得下面的结果这是要将它应用到一个ID超过1000条记录的数据库
"0102030301" "0223456783" "5234567123" "0916784443214"
2条答案
按热度按时间unguejic1#
你有几个问题。
x
是数字,所以当你测试x >= 12
时,它的值,而不是字符数。使用nchar(x)
获取字符数。1.您的条件颠倒了-
if_else(x>=12, ..., true = stringr::str_pad(x, 10, side = "left", pad = 0))
只填充12个长度的数字,最多为10个长度...什么都不做1.我不知道如果输入有11个字符你想发生什么...有了这个代码(模仿你的),它将被填充到12。
在这两种情况下使用
str_pad
感觉更安全,因为你说如果它从12或更多开始,你希望得到的位数是13(尽管这不会减少14或更多位数的输入)。xjreopfe2#
下面是一个使用Gregor方法的更简单的解决方案,但仅限于您的确切例子: