令我困惑的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/