2009-10-17 8 views
38

Estoy enviando un dataframe a html a través de xtable. Quiero agregar comas a los números en un par de columnas de la tabla. Pensé que antes de hacer mi propio truco de pegar verificaría si había una forma integrada de hacerlo.agrega comas en el número para la salida

Respuesta

47

Es posible que desee considerar la transformación de la columna usando 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

enormes gracias a Jonathan Chang por su respuesta. formatC parece ser una función extremadamente útil. Esto me inspiró a leer la documentación en la que encontré prettyNum, que resultó ser una solución bastante elegante para un problema similar que estaba teniendo. Aquí hay un ejemplo mínimo viable de lo que hice para agregar comas a los números en un marco de datos llamado enrollment.summary.

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

+1

'formatC' es una [función] (https://stat.ethz.ch/R-manual/R-devel/library/base/html/formatc.html) en el paquete 'base', no un paquete en sí. En el futuro, incluya ejemplos reproducibles y muestre el comportamiento en su respuesta. Por ejemplo, considere reemplazar 'enrollment.summary' con' mtcars': 'prettyNum (mtcars, big.mark =", ")' devuelve una matriz de caracteres donde las columnas corresponden a columnas en el marco de datos 'mtcars', y los números son impreso. –

+2

También tenga en cuenta que 'prettyNum' rellena su salida con espacio en blanco (potencialmente no deseado): prettyNum (c (123,1234), big.mark =", "); da "123" "1,234". agregue preserve.width = "none" para evitar esto. – MichaelChirico

7

También puede tratar de usar el argumento fuction '' format.args

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

de aquí

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

+0

Esto es muy útil, ya que le permite al usuario mantener el formato original de las columnas. – dayne

2

para dar formato a algunos resúmenes de dplyr, aquí es repetitivo código:

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

2

Aquí es una respuesta tardía, pero también se puede utilizar scales::comma_format de la siguiente manera:

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

Para valores enteros simplemente, sólo se puede usar una coma:

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