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

總結

相對來看自編函數可以實現,但是內置函數參數設置更加全面。有更好的想法的夥伴可以評論區指出。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章