R 初心者として私が困惑したことの 1 つは、印刷時に数値をパーセンテージとしてフォーマットする方法でした。
たとえば、0.12345
と表示します12.345%
。これについてはいくつかの回避策がありますが、どれも「初心者に優しい」ものではないようです。たとえば、次のようになります。
set.seed(1)
m <- runif(5)
paste(round(100*m, 2), "%", sep="")
[1] "26.55%" "37.21%" "57.29%" "90.82%" "20.17%"
sprintf("%1.2f%%", 100*m)
[1] "26.55%" "37.21%" "57.29%" "90.82%" "20.17%"
質問:これを行うための基本的な R 関数はありますか? あるいは、便利なラッパーを提供する、広く使用されているパッケージはありますか?
?format
、およびでこのようなものを検索したにもかかわらず?formatC
、?prettyNum
ベース R で適切に便利なラッパーはまだ見つかりませんでした??"percent"
。library(sos); findFn("format percent")
は、1250 件のヒットを返しますが、これも役に立ちません。 にggplot2
は関数がありますpercent
が、これでは丸めの精度を制御できません。
ベストアンサー1
さらに後になって:
@DzimitryM が指摘したように、percent()
は「廃止」されlabel_percent()
、古いpercent_format()
関数の同義語である が採用されました。
label_percent()
関数を返すので、それを使用するには追加の括弧が必要です。
library(scales)
x <- c(-1, 0, 0.1, 0.555555, 1, 100)
label_percent()(x)
## [1] "-100%" "0%" "10%" "56%" "100%" "10 000%"
最初の括弧内に引数を追加してカスタマイズします。
label_percent(big.mark = ",", suffix = " percent")(x)
## [1] "-100 percent" "0 percent" "10 percent"
## [4] "56 percent" "100 percent" "10,000 percent"
数年後の最新情報:
最近はpercent
機能するscales
krlmlr の回答に記載されているように、パッケージを使用します。私の手作りのソリューションの代わりにそれを使用してください。
次のようなことを試してみてください
percent <- function(x, digits = 2, format = "f", ...) {
paste0(formatC(100 * x, format = format, digits = digits, ...), "%")
}
使用例:
x <- c(-1, 0, 0.1, 0.555555, 1, 100)
percent(x)
(必要に応じて、形式を から に変更します"f"
。"g"
)