在输出数字时添加逗号

59

我正在使用xtable将数据框输出到html。 我想在表格的某些列中添加逗号以分隔数字。 在我自己的粘贴操作之前,我打算先检查是否有内置的方法来完成这个任务。

5个回答

82

您可能希望考虑使用 formatC 转换列

> formatC(1:10 * 100000, format="d", big.mark=",")
 [1] "100,000"   "200,000"   "300,000"   "400,000"   "500,000"   "600,000"  
 [7] "700,000"   "800,000"   "900,000"   "1,000,000"

1
你知道如何像那样格式化整个文档吗? - Antoni Parellada

17
非常感谢Jonathan Chang的答案。`formatC` 看起来是一个非常有用的函数。这启发了我阅读它的文档,其中我找到了 `prettyNum`,它是一个相当优雅的解决方案,可以解决我遇到的类似问题。以下是我为名为 `enrollment.summary` 的数据框添加逗号的最小可行示例。
``` xtable(prettyNum(enrollment.summary,big.mark=",")) ```

1
formatCbase包中的一个函数,而不是一个独立的包。请在以后的回答中提供可重现的示例并显示行为。例如,考虑将enrollment.summary替换为mtcarsprettyNum(mtcars, big.mark=",")返回一个字符矩阵,其中列对应于mtcars数据框中的列,并打印数字。 - Max Ghenis
3
请注意,prettyNum函数会在输出结果中添加(可能不需要的)空格:使用prettyNum(c(123,1234),big.mark=",")会得到" 123"和"1,234"。如果想要避免这种情况,可以添加参数preserve.width="none" - MichaelChirico

14

这非常有用,因为它允许用户保持列的原始格式。 - dayne

13

虽然回答有些晚了,但你也可以使用 scales::comma_format 函数,如下所示:

library(scales)
values <- c(1000000.789, 8888.23)
comma_format(digits = 12)(values)
## [1] "1,000,000.789" "8,888.230"

对于整数值,您只需使用逗号:

library(scales)
int_vals <- c(1234, 5678)
comma(int_vals)
## [1] "1,234" "5,678"

有一件事情对我来说出了问题,那就是它将其转换为字符串。 - Sovik Gupta
@SovikGupta 是的,会的。当你要显示它时,你只需要添加逗号。如果你有一个 data.frame 数据,你很可能会保持它为数字。你在什么情况下遇到了问题? - steveb
@SovikGupta 使用 dplyr 的示例可以添加列的字符串版本,例如 dplyr::tibble(A = c(1:5) * 1e6) %>% dplyr::mutate(A.as.String = scales::comma(A)) 或者只是将输出作为字符串而不修改数据框,例如 dplyr::tibble(A = c(1:5) * 1e6) %>% dplyr::mutate(A = scales::comma(A)) - steveb

7

如果要格式化dplyr中的一些摘要,这里是通用代码:

df %>%
    summarise(mu=mean(big_values),
              min=min(big_values),
              max=max(big_values)) %>%
    mutate_each(funs(prettyNum(., big.mark=",")))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接