R语言入门——百分数转化

00引言

在数据的处理中尤其是Rmarkdown的书写时往往需要输出百分数,可是R里核心函数里没有现成函数。本篇总结一下常用的做法。

1、思路

1、将原有的数字乘以100,在用paste函数粘贴%
2、函数包的使用。

2、R实现

2.1自编函数

> # 加载核心包
> library(compiler)  
> My_percnet <- function(x){
+   return(paste0(format(x*100,digits = 1),"%"))
+ }
> My_percnet <- cmpfun(My_percnet)
> My_percnet((1:5) / 100)
[1] "1%" "2%" "3%" "4%" "5%"

这部分自编了My_percnet函数,实现了小数向量化转百分数。以下有两点说明:
1、函数体内digits可以控制百分数的位数。
2、compiler中的cmpfun函数可以实现自编函数编码化,一定程度上提高自编函数的运算速度。

> My_percnet
function(x){
  return(paste0(format(x*100,digits = 1),"%"))
}
<bytecode: 0x000000000c79cb30>

上面是自编函数的函数体,大家看有啥差别。有一行<bytecode: 0x000000000c79cb30>这是对函数进行编码化。

2.2调用包

2.2.1实现

> library('scales')
> percent((1:5) / 100)
[1] "1.0%" "2.0%" "3.0%" "4.0%" "5.0%"

我们看到这个scales中的percent函数也能完成这个任务,但是这个函数还有些参数。下面给大家介绍下用法。

function (x, accuracy = NULL, scale = 100, prefix = "", 
    suffix = "%", big.mark = " ", decimal.mark = ".", 
    trim = TRUE, ...) 
{
    number(x = x, accuracy = accuracy, scale = scale, prefix = prefix, 
        suffix = suffix, big.mark = big.mark, decimal.mark = decimal.mark, 
        trim = trim, ...)
}

2.2.2scale

这个参数可以设置为千分之一万分之一默认为100,百分之一。

> percent((1:5)/100,scale = 1000, suffix = "%")
[1] "10%" "20%" "30%" "40%" "50%"

2.2.3suffix

这个参数则是设置,后面的的符号。

> percent((1:5)/100,scale = 100, suffix = "#")
[1] "1.0#" "2.0#" "3.0#" "4.0#" "5.0#"

总结

相对来看自编函数可以实现,但是内置函数参数设置更加全面。有更好的想法的伙伴可以评论区指出。

发布了14 篇原创文章 · 获赞 49 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_46111814/article/details/105371942
今日推荐