2009-10-17 98 views
38

我通过xtable将数据框输出到html。我想在表格的几列中添加逗号给数字。我想,在我做我自己的粘贴黑客之前,我会检查是否有内置的方式来做到这一点。为输出添加逗号数

回答

47

你可能要考虑使用转化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" 
12

巨大的感谢乔纳森昌列他的回答。 formatC看起来是一个非常有用的功能。这启发了我阅读它的文档,其中我发现了prettyNum,这对我遇到的类似问题来说是一个非常优雅的解决方案。下面是我在数据框enrollment.summary中为数字添加逗号所做的最小可行示例。

xtable(prettyNum(enrollment.summary,big.mark=","))

+1

'formatC'是[函数](https://stat.ethz.ch/R-manual/R-devel/library/base/html/formatc.html)在'base'包中,而不是包本身。今后,请包括可重复的例子,并在答案中显示行为。例如,考虑用'mtcars'替换'enrollment.summary':'prettyNum(mtcars,big.mark =“,”)'返回一个字符矩阵,其中列对应于'mtcars' data.frame中的列,数字是打印。 – 2015-03-29 19:20:47

+2

另请注意,'prettyNum'为您的输出填充(可能不需要的)空格:prettyNum(c(123,1234),big.mark =“,”);给出“123”“1,234”。添加preserve.width =“无”来防止这种情况。 – MichaelChirico 2015-05-21 19:44:20

7

您也可以尝试使用机能的研究论证 'format.args'

## Demonstration of additional formatC() arguments. 
    print(fm1.table, format.args = list(big.mark = "'", decimal.mark = ",")) 

从这里

https://cran.rstudio.com/web/packages/xtable/xtable.pdf

+0

这非常有用,因为它允许用户保留列的原始格式。 – dayne 2017-12-04 13:43:02

2

格式化从dplyr一些总结,这里是样板代码:

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

2

这是一个迟到的答案,但你也可以使用scales::comma_format如下:

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

对于刚刚整数值,你可以用逗号:

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