【问题标题】:How to add zeros after decimal but still keep the total character length same?如何在小数点后添加零但仍保持总字符长度相同?
【发布时间】:2019-02-05 18:04:01
【问题描述】:

所以我知道这个问题会是我的时代,但我在这里找不到答案。我有一堆账户余额,例如:85,415.2、2,690.35、3,312.768。我想在每个余额的末尾添加零,使数字的总长度变为 10。如果帐户余额已经有 10 个字符,则不应添加零。我正在使用 sprint("%10f", account_balance) 但它没有给出正确的答案..

【问题讨论】:

  • 你说“小数点后”——你确定总有小数点吗?
  • 你试过formatC函数吗?有一个参数叫做width。我想这就是你要找的。​​span>
  • 嗯,我有一个庞大的数据集(百万+)账户余额,没有检查所有这些,但我需要的是一致性。在命令结束时,所有余额应该看起来相同,包含 10 个字符,包括小数和零。
  • 我只是担心如果你在一行中有"20",当你想要"20.0000000"时你会得到"2000000000"...但这是一个更复杂的问题陈述如果您需要检查添加的 0 是否在小数点后

标签: r


【解决方案1】:

附加一个由 10-n 个零组成的字符串,其中 n 是字符长度的向量。没有使用任何包。

x <- c("85,415.2", "2,690.35", "3,312.768") # test input

paste0(x, strrep(0, 10-nchar(x)))
## [1] "85,415.200" "2,690.3500" "3,312.7680"

【讨论】:

  • 不,它不起作用。我收到一条错误消息,提示“'times' value 无效
  • 将答案中的两行代码复制并粘贴到新的 R 会话中,您将看到答案中显示的输出。
  • 当 'times' 参数为负数时,invalid times 是一个错误。
  • 问题就是问题。所有问题都需要有可重复的输入。由于未提供此答案,因此提供了此答案。如果您想对 x 做出一些不同的假设,则在问题中显示 dput(x) 的输出,如果您正在使用任何包,则库语句也应显示在问题中。
【解决方案2】:

可以通过str_pad完成

library(stringr)
str_pad(v1, pad = "0", width = 10, side = "right")
#[1] "85,415.200" "2,690.3500" "3,312.7680"

数据

v1 <- c('85,415.2', '2,690.35', '3,312.768')

【讨论】:

  • @TotalGadha 不清楚评论。根据示例和描述,它给出了 10 个字符
猜你喜欢
  • 2015-05-25
  • 1970-01-01
  • 2012-06-12
  • 2012-08-07
  • 1970-01-01
  • 2019-03-15
  • 2014-04-12
  • 2016-09-09
  • 1970-01-01
相关资源
最近更新 更多