我正在使用xtable
将数据框输出到html。 我想在表格的某些列中添加逗号以分隔数字。 在我自己的粘贴操作之前,我打算先检查是否有内置的方法来完成这个任务。
您可能希望考虑使用 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"
formatC
是base
包中的一个函数,而不是一个独立的包。请在以后的回答中提供可重现的示例并显示行为。例如,考虑将enrollment.summary
替换为mtcars
:prettyNum(mtcars, big.mark=",")
返回一个字符矩阵,其中列对应于mtcars
数据框中的列,并打印数字。 - Max GhenisprettyNum
函数会在输出结果中添加(可能不需要的)空格:使用prettyNum(c(123,1234),big.mark=",")
会得到" 123"和"1,234"。如果想要避免这种情况,可以添加参数preserve.width="none"
。 - MichaelChirico您也可以尝试使用函数参数 'format.args'
## Demonstration of additional formatC() arguments.
print(fm1.table, format.args = list(big.mark = "'", decimal.mark = ","))
从这里开始
虽然回答有些晚了,但你也可以使用 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"
data.frame
数据,你很可能会保持它为数字。你在什么情况下遇到了问题? - stevebdplyr
的示例可以添加列的字符串版本,例如 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如果要格式化dplyr
中的一些摘要,这里是通用代码:
df %>%
summarise(mu=mean(big_values),
min=min(big_values),
max=max(big_values)) %>%
mutate_each(funs(prettyNum(., big.mark=",")))