R如何添加前导零而不是空格[重复]
Posted
技术标签:
【中文标题】R如何添加前导零而不是空格[重复]【英文标题】:R how add leading zero instead of white space [duplicate] 【发布时间】:2018-03-02 21:24:58 【问题描述】:首先,我已经阅读了以下帖子(R: keep leading zero、and again、and this one、and this one 或 this one。),但我的问题没有得到任何人的回答。
我尝试在ID
列中添加前导零。该文件是从excel导入的,我不知道如何上传到这里。可能无法向您复制该过程。
当我使用以下任何代码添加前导零时
formatC(data$col,width=5,format="s",flag="0")
sprintf("%05s",data$col)
gsub('\\s','0',data$col)
他们都在字符串前给了我一个空格,而不是零。例如" 4097"
我也尝试修剪任何空格trimws(sort$DlrNbr, which = c("both", "left", "right"))
,然后重新尝试添加前导零,仍然失败。
你知道发生了什么吗?任何见解都是有帮助的!
【问题讨论】:
寻求帮助时,您应该包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出。 我会记住这一点 【参考方案1】:您在 sprintf 中使用了错误的格式。
使用sprintf('%05d', data$col)
应该可以解决问题(注意d
,用于格式化整数,而不是s
,用于格式化字符串)。
您可以在帮助页面中找到更多详细信息:https://www.rdocumentation.org/packages/base/versions/3.4.3/topics/sprintf
【讨论】:
嗨,Lucacerone,非常感谢。你解决了我的问题。我不知道我可以转换为数字并添加前导零。谢谢! 还是不行。 sprintf('%02s', "1") 返回“1”,而不是“01”。【参考方案2】:使用stringr
包:
library(stringr)
str_pad(data$col, 5, pad = "0")
【讨论】:
【参考方案3】:为什么不直接使用粘贴,即:
library(data.table)
data[, col := paste0('0', col)]
【讨论】:
嘿,因为它应该是一个固定的宽度,有些 id 就像 45009,他们不需要前导零。非常感谢你以上是关于R如何添加前导零而不是空格[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 sprintf 函数在字符中添加前导“0”而不是空格?