Comment formater numéros dans r

Lorsque vous produisez des rapports dans R, vous voulez que vos numéros apparaissent toutes joliment formatés pour renforcer l'impact de vos données sur le spectateur. Tu peux utiliser format () pour transformer vos nombres dans jolie texte, prêt pour l'impression. Cette fonction prend un certain nombre d'arguments pour contrôler le format de votre résultat. Voici quelques-unes:

  • tailler: Une valeur logique. Si FAUX, il ajoute des espaces à droite; justifier le résultat. Si VRAI, il supprime les espaces de début.

  • chiffres: Combien de chiffres significatifs de valeurs numériques pour afficher.

  • nPetite: Le nombre minimal de chiffres après la virgule.

En outre, vous pouvez contrôler le format de la virgule avec decimal.mark, la marque entre les intervalles avant la virgule avec big.mark, ainsi que la marque entre les intervalles après la virgule avec small.mark.

Par exemple, vous pouvez imprimer le nombre 12,345,6789 avec une virgule comme séparateur décimal, espaces comme la grande marque, et les points que la petite marque:

> Format (12345.6789, chiffres = 9, decimal.mark = ",", + big.mark = "", small.mark = ".", Small.interval = 3) [1] «12 345,678.9"



A titre d'exemple plus pratique, pour calculer les moyens de certaines colonnes de mtcars puis imprimer les résultats avec deux chiffres après la virgule, utilisez la commande suivante:

> X lt; - colMeans (mtcars [1: 4])> Format (x, chiffres = 2, nPetite = 2) mpg cyl disphp "20.09" "6.19" "230,72" "146.69"

Notez que le résultat est plus un numéro, mais une chaîne de texte.

Si vous êtes familier avec la programmation en langues similaires à C ou C ++, alors vous pouvez également trouver le sprintf () fonction utile, parce sprintf () est un wrapper autour de la C printf () fonction. Ce gestionnaire vous permet de coller votre numéro formatée directement dans une chaîne.

Voici un exemple de convertir des nombres en pourcentages:

> X lt; - seq (0,5, 0,55, 0,01)> sprintf ("%%% 1f.", 100 x *) [1] "50,0%" "51,0%" "52,0%" "53,0%" "54,0%" " 55,0% "

Ceci est ce qu'il fait: Le premier argument de sprintf () indique le format - dans ce cas, "% .1f %%". L'argument de format utilise littéraux spéciaux qui indiquent que la fonction doit remplacer ce littérale avec une variable et d'appliquer une mise en forme. Les littéraux commencent toujours avec le % symbole. Donc, dans ce cas, % .1f des moyens pour formater la première valeur fournie comme un point fixe la valeur avec un chiffre après la virgule, et %% est un littéral que des moyens d'impression d'un %.

Pour formater certains numéros comme monnaie - dans ce cas, en dollars américains - utilisent les suivantes:

> Set.seed (1)> x lt; - 1000 * runif (5)> sprintf ("$% 3.2f", x) [1] «$ 265,51» «$ 372,12» «572,85 $» «$ 908,21» «201,68 $»

Comme vous avez vu plus tôt, le littéral % 3.2f des moyens pour formater la valeur comme une valeur de point fixe avec trois chiffres avant la virgule et deux chiffres après la virgule.

La sprintf () fonction est beaucoup plus puissant que ce qui suit: Il vous donne une autre façon de coller la valeur d'une variable dans une chaîne:

> Trucs lt; - c ("pain", "cookies")> Prix lt; - c (2.1, 4)> sprintf ("$ chiffré% 3.2f% s", des trucs, prix) [1] «pain coûtait 2.10 $" des "cookies chiffrés 4,00 $"

Ce qui se passe ici est que, parce que vous avez fourni deux vecteurs (chacune avec deux éléments) pour sprintf (), votre résultat est un vecteur à deux éléments. R cycles à travers les éléments et les place dans la sprintf () littéraux. Ainsi, % s (indiquant le format de la valeur comme une chaîne) obtient la valeur "pain" la première fois, et "biscuits" la deuxième fois.

Vous pouvez tout faire avec coller () et format () que vous pouvez faire avec sprintf ().


» » » » Comment formater numéros dans r