web-dev-qa-db-fra.com

ajouter des virgules en nombre pour la sortie

Je produis une trame de données en html via xtable. Je veux ajouter des virgules aux nombres dans quelques colonnes du tableau. J'ai pensé avant de faire mon propre piratage de pâte que je vérifierais s'il y avait un moyen intégré de le faire.

47
Dan

Vous voudrez peut-être envisager de transformer la colonne à l'aide de 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"
63
Jonathan Chang

Un grand merci à Jonathan Chang pour sa réponse. formatC semble être une fonction extrêmement utile. Cela m'a inspiré à lire la documentation, dans laquelle j'ai trouvé prettyNum, qui s'est avéré être une solution assez élégante à un problème similaire que j'avais. Voici un exemple viable minimum de ce que j'ai fait pour ajouter des virgules aux nombres dans un bloc de données nommé enrollment.summary.

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

14
woodrad

Vous pouvez également essayer d'utiliser l'argument de fonction 'format.args'

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

d'ici

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

9
user3357059

Voici une réponse tardive, mais vous pouvez également utiliser scales::comma_format comme suit:

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

Pour les valeurs entières uniquement, vous pouvez simplement utiliser une virgule:

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

pour formater quelques résumés à partir de dplyr, voici le code passe-partout:

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