Je génère une trame de données en HTML via xtable
. Je veux ajouter des virgules aux nombres dans quelques colonnes de la table. Je me suis dit avant de faire mon propre hack que je verrais s'il y a un moyen de le faire.Ajouter des virgules dans le nombre pour la sortie
Répondre
Vous voudrez peut-être envisager de transformer la colonne en utilisant 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"
Un grand merci à Jonathan Chang pour sa réponse. formatC
semble être une fonction extrêmement utile. Cela m'a inspiré à lire la documentation, où 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 minimum viable 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=","))
Vous pouvez également essayer d'utiliser l'argument auj 'format.args'
## Demonstration of additional formatC() arguments.
print(fm1.table, format.args = list(big.mark = "'", decimal.mark = ","))
d'ici
Ceci est très utile, car il permet à l'utilisateur de conserver le format original des colonnes. – dayne
pour mettre en forme des résumés de dplyr
, voici boilerplate code:
df %>% summarise(mu=mean(big_values), min=min(big_values), max=max(big_values)) %>% mutate_each(funs(prettyNum(., big.mark=",")))
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 juste des valeurs entières, vous pouvez simplement utiliser des virgules:
int_vals <- c(1234, 5678)
comma(int_vals)
## [1] "1,234" "5,678"
'formatC' est un [function] (https://stat.ethz.ch/R-manual/R-devel/library/base/html/formatc.html) dans le paquet 'base', pas un paquet lui-même. À l'avenir, veuillez inclure des exemples reproductibles et afficher le comportement dans votre réponse. Par exemple, envisagez de remplacer 'enrollment.summary' par' mtcars': 'prettyNum (mtcars, big.mark =", ")' renvoie une matrice de caractères où les colonnes correspondent aux colonnes du fichier "mtcars' data.frame, et les nombres sont imprimé. –
Notez également que 'prettyNum' remplit votre sortie avec un espace vide (potentiellement indésirable): prettyNum (c (123,1234), big.mark =", "); donne "123" "1,234". Ajoutez preserve.width = "none" pour éviter cela. – MichaelChirico