为了账号安全,请及时绑定邮箱和手机立即绑定

如何添加前导零?

如何添加前导零?

慕运维8079593 2019-06-01 16:51:02
如何添加前导零?我有一组数据如下所示:anim <- c(25499,25500,25501,25502,25503,25504)sex  <- c(1,2,2,1,2,1)wt   <- c(0.8,1.2,1.0,2.0,1.8,1.4)data <- data.frame(anim,sex,wt)data   anim sex  wt anim21 25499   1 0.8     22 25500   2 1.2     23 25501   2 1.0     24 25502   1 2.0     25 25503   2 1.8     26 25504   1 1.4     2我希望在每个动物身份之前加一个零:data   anim sex  wt anim21 025499   1 0.8     22 025500   2 1.2     23 025501   2 1.0     24 025502   1 2.0     25 025503   2 1.8     26 025504   1 1.4     2为了利息起见,如果我需要在动物身份之前加两个或三个零呢?
查看完整描述

4 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

中有多少位数的通用解决方案。data$anim,使用sprintf功能。它的工作方式如下:

sprintf("%04d", 1)# [1] "0001"sprintf("%04d", 104)# [1] "0104"sprintf("%010d", 104)# [1] "0000000104"

就你而言,你可能想:data$anim <- sprintf("%06d", data$anim)


查看完整回答
反对 回复 2019-06-01
?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

在@Goodside‘srepsonse上扩展:

在某些情况下,您可能希望使用零填充字符串(例如,FIPS代码或其他类似数字的因素)。在OSX/Linux中:

> sprintf("%05s", "104")[1] "00104"

但因为sprintf()调用OS的Csprintf()命令,讨论这里,在Windows 7中,您会得到一个不同的结果:

> sprintf("%05s", "104")[1] "  104"

所以在Windows机器上的工作是:

> sprintf("%05d", as.numeric("104"))[1] "00104"


查看完整回答
反对 回复 2019-06-01
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

str_padstringr包裹是另一种选择。

anim = 25499:25504str_pad(anim, width=6, pad="0")


查看完整回答
反对 回复 2019-06-01
  • 4 回答
  • 0 关注
  • 822 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信