令我困惑的R之一是如何格式化数字以百分比形式打印。

例如,将0.12345显示为12.345%。我有许多解决方法,但是这些方法似乎都不是“newby friendly”。例如:

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,但这不能控制舍入精度。

最佳答案

甚至更晚:

如@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"

几年后的更新:

如今,在ktt_a包中有一个 percent 函数,如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)

(如果愿意,可以将格式从scales更改为"f"。)

关于r - 如何在R中将数字格式化为百分比?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7145826/

10-09 21:37