R中的格式编号,包含逗号千位分隔符和指定小数

时间:2015-04-06 05:43:32

标签: r format

我想用千位分隔符格式化数字并指定小数位数。我知道如何分开做这些,但不能一起做。

例如,我对每个this使用format作为小数:

FormatDecimal <- function(x, k) {
  return(format(round(as.numeric(x), k), nsmall=k))
}
FormatDecimal(1000.64, 1)  # 1000.6

对于千位分隔符,formatC

formatC(1000.64, big.mark=",")  # 1,001

但这些不能很好地融合在一起:

formatC(FormatDecimal(1000.64, 1), big.mark=",")  
# 1000.6, since no longer numeric
formatC(round(as.numeric(1000.64), 1), nsmall=1, big.mark=",")
# Error: unused argument (nsmall=1)

我如何获得1,000.6

编辑:这与this question不同,{{3}}询问格式3.14为3,14(被标记为可能的重复)。

4 个答案:

答案 0 :(得分:50)

format不是formatC

format(round(as.numeric(1000.64), 1), nsmall=1, big.mark=",") # 1,000.6

答案 1 :(得分:5)

formatC(1000.64, format="f", big.mark=",", digits=1)

(对不起,如果我错过了什么。)

答案 2 :(得分:1)

scales 库有一个 label_comma 函数:

scales::label_comma(accuracy = .1)(1000.64)
[1] "1,000.6"

如果您想在千位使用逗号以外的其他字符或其他字符代替小数点等,请使用其他参数(见下文)。

注意:label_comma(...) 的输出是一个 函数,以使其更易于在 ggplot2 参数中使用,因此附加括号表示法。如果您重复使用相同的格式,这可能会有所帮助:

my_comma <- scales::label_comma(accuracy = .1, big.mark = ".", decimal.mark = ",")

my_comma(1000.64)
[1] "1.000,6"

my_comma(c(1000.64, 1234.56))
[1] "1.000,6" "1.234,6"

答案 3 :(得分:0)

formattable提供了comma

library(formattable)

comma(1000.64, digits = 1) # 1,000.6

commaformatC提供了基本接口。