【问题标题】:R how add leading zero instead of white space [duplicate]R如何添加前导零而不是空格[重复]
【发布时间】:2018-03-02 21:24:58
【问题描述】:

首先,我已经阅读了以下帖子(R: keep leading zeroand againand this oneand this onethis 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,其中包含可用于测试和验证可能解决方案的示例输入和所需输出。
  • 我会记住这一点

标签: r whitespace leading-zero


【解决方案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,他们不需要前导零。非常感谢你
    猜你喜欢
    • 2014-03-04
    • 1970-01-01
    • 1970-01-01
    • 2016-11-24
    • 2015-03-04
    • 2021-11-26
    相关资源
    最近更新 更多