Rの数値のカンマ区切り?


99

Rにカンマで区切られた大きな数値を表示する関数はありますか?

つまり、から1000000まで1,000,000です。


Excelで簡単な、R
イラクサ

回答:


134

formatまたはprettyNumのいずれかを試すことができますが、どちらの関数も文字のベクトルを返します。私はそれを印刷にのみ使用します。

> prettyNum(12345.678,big.mark=",",scientific=FALSE)
[1] "12,345.68"
> format(12345.678,big.mark=",",scientific=FALSE)
[1] "12,345.68"

編集:マイケル・キリコがコメントで言うように:

これらには、印刷された文字列に空白スペースを埋め込むという副作用があることに注意してください。次に例を示します。

> prettyNum(c(123,1234),big.mark=",")
[1] "  123" "1,234"

これを防止するためにtrim=TRUEformatまたはpreserve.width="none"に追加しprettyNumます。

> prettyNum(c(123,1234),big.mark=",", preserve.width="none")
[1] "123"   "1,234"
> format(c(123,1234),big.mark=",", trim=TRUE)
[1] "123"   "1,234"

5
これらには、印刷された文字列に空白スペースを埋め込むという副作用があることに注意してくださいprettyNum(c(123,1234),big.mark=",")。次に例を示します。与え" 123" "1,234"ます。これを防ぐためにtrim=Tformatまたはpreserve.width="none"に追加しprettyNumてください。
MichaelChirico

@MichaelChirico追加情報をありがとう。回答に追加しました。
Joris Meys、2015年

小数点以下の桁数も設定している場合、ベクトルがある場合、分子がまったく異なる場合、これがうまくいかない可能性があることに注意してください。ヘルプから「数値ベクトルは、すべての要素を少なくとも有効数字の桁まで表示するために必要な最小の小数点以下の桁数でエンコードされます。ただし、すべての要素に後続ゼロがある場合、小数点以下の桁数はnsmallまで減少します」
micstr

1
したがってformat(c(12345678,0.001234),big.mark=",", trim=TRUE, digits = 2, scientific = FALSE)、 `" 12,345,678.0000 "" 0.0012 "と表示され、十分に表示されます。つまり、場所の書式設定は要素ごとに行われません。私を捕まえたのでこれを共有したかった
micstr

scientificの議論の干し草の山に隠されているものを見つけるためにかなりの時間を費やしましたformat。ありがとう!
MichaelChirico 2016


11

投稿された他の回答は明らかに機能しますが、私は常に使用しています

library(scales)    
comma_format()(1000000)

関数comma_formatは整数のみを処理できます。
Ven Yao

3
これは非常に遅れ応答であり、それは過去に真であったかもしれないcomma_format実数を処理していませんでしたが、今、あなたは、次の操作を行うことができます。scales::comma_format(digits = 12)(1000000.789)以下に結果を:"1,000,000.789"
steveb 2017年

2
scales :: comma(1000000)は注目に値するようです。
Joe

3

MatthewRに対するJoeのコメントが最良の答えを提供しており、強調表示する必要があると思います。

2018年9月現在、scalesパッケージ(の一部Tidyverse)はこれを正確に実行します。

> library(scales)

> x <- 10e5
> comma(x)

[1] "1,000,000"

scalesパッケージには、と非常にうまく果たしていると思わggplot2数値がグラフやチャートに表示されているかの細かな制御を可能に。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.