【发布时间】:2015-11-11 17:43:56
【问题描述】:
必须有一个简单的方法来做到这一点,我忽略了它。但是,如果我有一系列 id 并想在未达到字符限制的地方添加尾随零。我在另一篇文章中看到了这个解决方案,但似乎找不到链接以供参考。
df$id <- c(2331,29623,311,29623)
这样做会得到前导零:
df$id_new <- sprintf("%05s", df$id)
但这样做不会得到尾随零:
df$id_new <- sprintf("%-05s", df$id)
回答
感谢下面的Richard,我拉了stringr这个包,用下面的来测试:
df$id_test <- str_pad(df$id, width=5, side="right", pad="0")
制作:
id_test
23310
29623
31100
29623
【问题讨论】:
-
尾随零使其成为不同的数字。为什么 sprintf 能够做到这一点?
-
另外,您应该使用
%d,但后者无关紧要。您可以使用stringi::stri_pad_right(id, 5, "0")填充尾随零 -
你可以将数字相乘
sprintf("%g", nums*10^(5-nchar(nums))) -
@RichardScriven "无效格式 '%05d';对字符对象使用格式 %s"
-
@stark 因为它是一个被读取为数字的 ID,并且所有 id 的字符数应该相同
标签: r