R で数値をパーセンテージとしてフォーマットするにはどうすればいいですか? 質問する

R で数値をパーセンテージとしてフォーマットするにはどうすればいいですか? 質問する

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機能するscaleskrlmlr の回答に記載されているように、パッケージを使用します。私の手作りのソリューションの代わりにそれを使用してください。


次のようなことを試してみてください

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")

おすすめ記事