在实践中,数字并不总是像它们在理论上那样好理解,因为实际产生的数据往往小数较多。因此通常有必要对数字进行四舍五入,以使它们更具可读性。 本文介绍 R 提供的几个类似功能函数,进行对比学习。

数据四舍五入

两个数据相除结果可能包括很多小数,一般需要进行四舍五入。四舍五入可以有多种方式实现,大多数语言都类似函数,R也一样。你可以向上或向下四舍五入,也可以四舍五入到最接近的整数或预定的数字。因此需要几个不同函数实现。

round 函数

语法如下,number是需要四舍五入的数字,digits是保留小数位数。请示例:

#  round(number,digits)round(1234.56789,3)
# [1] 1234.568
round(1234.56789,0)
# [1] 1235
round(1234.56789,-3)
# [1] 1000

digit为正数会影响小数点后面数,负数则影响小数点前面的数。

signif 函数

语法如下,digits表示整个数据保留的位数:

# signif(number,digits)
signif(1234.566789,4)
# [1] 1235
signif(1234.566789,7)
# [1] 1234.567
signif(1234.566789,1)
# [1] 1000

signif函数取整到给定的数字位数。round和signif函数都使用标准的舍入约定。

floor 函数

floor四舍五入至到小于它的最近整数:

# floor in r example
floor(3.14159)
# [1] 3
floor(-3.14159)
# [1] -4

我们看到floor函数总是向下取最近的整数。

ceiling 函数

ceiling函数四舍五入至大于它的最近整数:

# ceiling in R example
ceiling(3.14159)
# [1] 4
ceiling(-3.14159)
# [1] -3

ceiling函数总是向上取最近整数。

trunc 函数

Tranc函数仅保留整数部分,直接舍去小数。

#Trunc in R example
trunc(3.14159)
# [1] 3
trunc(-3.14159)
# [1] -3

其他方案

四舍五入函数应用较多,因为大多数函数不能产生简洁好懂的结果。R的舍入函数不仅处理单个数字,它们还可以舍入整个向量数据。甚至可以处理整个R数据框。舍入一个完整的R数据帧的主要限制是舍入函数只能处理数值。这个问题的解决方案是首先处理数值列,将它们四舍五入,然后再使用cbind函数进行绑定。

还可以使用print函数:

# options(digits = 2)
mydf <- data.frame(January = c(0.02345, 0.05432), February = c(0.03456, 0.06543), March = c(0.04567, 0.07654), non_numeric = c("abcdefgh", "ijklmno"))
mydf
#   January February   March non_numeric
# 1 0.02345  0.03456 0.04567    abcdefgh
# 2 0.05432  0.06543 0.07654     ijklmnoprint(mydf, digits = 2)
#   January February March non_numeric
# 1   0.023    0.035 0.046    abcdefgh
# 2   0.054    0.065 0.077     ijklmno

对于数据框中包含字符串列,我们可以自己定义函数实现:

round_df <- function(x, digits) {# round all numeric variables# x: data frame # digits: number of digits to roundnumeric_columns <- sapply(x, mode) == 'numeric'x[numeric_columns] <-  round(x[numeric_columns], digits)x
}round_df(data, 3)

R 数据四舍五入函数教程相关推荐

  1. 四舍五入函数round_如何在R中使用round()将数字四舍五入

    四舍五入函数round Rounding off the numbers can be achieved with round() in R. Round is one of the best way ...

  2. R语言rev函数对数据对象(向量、dataframe通过行或者列)反序实战

    R语言rev函数对数据对象(向量.dataframe通过行或者列)反序实战 目录 R语言rev函数对数据对象(向量.dataframe通过行或者列)反序实战

  3. R语言用户自定义函数的语法结构、编写自定义统计值计算函数(使用ifelse结构计算均值和标准差等)、编写自定义日期格式化(format)函数(switch函数使用不同分枝格式化日期数据)、应用自定函数

    R语言用户自定义函数的语法结构.编写自定义统计值计算函数(使用ifelse结构计算均值和标准差等).编写自定义日期格式化(format)函数(switch函数使用不同分枝格式化日期数据).应用自定函数 ...

  4. R语言merge函数全连接dataframe数据(Full (outer) join)、merge函数进行全连接必须将参数all设置为true(all=TRUE)、默认merge函数通过公共列名合并数

    R语言merge函数全连接dataframe数据(Full (outer) join).merge函数进行全连接必须将参数all设置为true(all=TRUE).默认merge函数通过公共列名合并数 ...

  5. R语言split函数、unsplit函数按组拆分数据、合并数据实战

    R语言split函数.unsplit函数按组拆分数据.合并数据实战 目录 R语言split函数.unsplit函数按组拆分数据.合并数据实战 #基本语法

  6. R语言merge函数左连接dataframe数据(Left (outer) join in R)、左连接必须将参数all设置(all.x = TRUE)、默认merge函数通过公共列名合并数据集

    R语言merge函数左连接dataframe数据(Left (outer) join in R).merge函数进行左连接必须将参数all设置为(all.x = TRUE).默认merge函数通过公共 ...

  7. R语言head函数和tail函数获取dataframe、列表list、向量vector的头部和尾部数据:tail提取数据对象的尾部数据、head提取数据对象的头部数据、默认6条数据、自定义设置返回条数

    R语言head函数和tail函数获取dataframe.列表list.向量vector的头部和尾部数据:tail提取数据对象的尾部数据.head提取数据对象的头部数据.默认6条数据.自定义设置返回条数 ...

  8. R语言unlist函数将复杂数据(list列表、dataframe、字符串String)对象处理成简单向量vector形式:将包含dataframe和字符串的向量列表转换为单个向量(删除数据名称)

    R语言unlist函数将复杂数据(list列表.dataframe.字符串String)对象处理成简单向量vector形式:将包含dataframe和字符串的向量列表转换为单个向量(删除数据名称) 目 ...

  9. R语定义函数对宽分布(wide distribution )、有偏分布(skew distribution)的数据进行对数变换(符号对数变换函数、signed log transformation)

    R语言自定义函数对宽分布(wide distribution ).有偏分布(skew distribution)的数据进行对数变换(符号对数变换函数.signed log transformation ...

最新文章

  1. 邮箱性质--全选单选的操作和传值 用属性的name传值
  2. python 可变参数
  3. 3分钟教你用python制作一个简单词云
  4. LEGO EV3 通信开发者套件
  5. 《数学之美》——第三章 个人笔记
  6. modbus软件开发实战指南_C++核心准则?GSL:指南支持库
  7. sql 避免除0错误_设计简历时避免这3个常见的UX错误
  8. (转)android WebView loadData不能解析(找不到网页)
  9. r语言处理数据集编码_在强调编码语言或工具之前,请学习这3个基本数据概念
  10. python-while循环简单版-练习
  11. asp.net网站后台退出后,点后退按钮仍能进,如何安全退出
  12. sun服务器如何查cpu信息,solaris 如何查看CPU信息
  13. lammps教程:推荐几个比较实用的lammps自带函数(2)
  14. 第一章:一年365天,每天进步1‰,累计进步多少?一年365天,每天退步1‰,累计退步多少?format入门
  15. Android 8.0 recovery 流程分析
  16. lua生成随机数,设置随机数种子
  17. JDK8安装 及 环境变量配置(新手向)
  18. mysql余额统计_实现按部门月卡余额总额分组统计的SQL查_mysql
  19. PCF8591 ADC 模数转换模块使用
  20. Vue vue-jsonp 跨域

热门文章

  1. 计算机到交换机端口查询,新手上路:根据ip地址查交换机端口网络知识 -电脑资料...
  2. arcpy.mapping-认识arcpy.mapping
  3. 10.30系统进程及服务控制,前后台调用,kill,进程信号,top进程动态监控,系统控制systemctl,ssh服务和认证,用户登陆审计
  4. Z05 - 006、网站转化以及漏斗分析(转化分析)
  5. 小米MIUI手机adb连接教程
  6. 手机如何测光照度_照度测定方法
  7. CNCF 新掌舵人首次亮相中国,KubeCon 2020 云原生峰会网上行
  8. CAD如何输入指定角度的直线、AUTOCAD——渐变填充
  9. 岳飞诗词集萃[zz]
  10. OpenStack Blazar 架构解析与功能实践