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”而不是空格?

如何将前导数字标识符(不一定为零)添加到 r 中的字符串

Python将前导零添加到时间字段[重复]

如何在Java(Android)中使用getMonth添加前导零[重复]

pySpark 3.0如何修剪所有列的空格[重复]