如何四舍五入到R中的特定小数

How to round to specific decimal numbers in R

我目前有 2 个全球数据数据集。一个是气候space,另一个是物种发生数据。两个数据集都有纬度和经度列。但是,气候 space 纬度和经度列为值 NNN.75 或 NNN.25。我的出现数据 Latitude 和 Longitude 更具体,从 NNN.01 到 NNN.99 不等。如何使用 R 将我的出现数据四舍五入到最接近的 .25 或 .75 点?

下面是我如何将我的出现点四舍五入到小数点后两位,但为了加入数据集,我需要匹配纬度和经度值。

occurrence <- Solanum_OccurrenceClean %>% 
  mutate_at(vars(lat,lon),funs(round(.,digits=2)))

感谢您的帮助!

在 R 中有两个有用的运算符 %%%/% 可用于获取除法的整数部分和小数部分。如果你有这个,除以1你就可以轻松做到。

set.seed(123)

x <- rnorm(10, mean = 300) 

ifelse(x %% 1 > 0.5,
       x %/%1 + 0.75,
       x %/%1 + 0.25)

向量来自这个

[1] 299.4395 299.7698 301.5587 300.0705 300.1293 301.7151 300.4609 298.7349 299.3131 299.5543

至此

 [1] 299.25 299.75 301.75 300.25 300.25 301.75 300.25 298.75 299.25 299.75

你可以定义一个函数,比如

function (x) floor(x) + ifelse(x-floor(x)<=0.5,0.25,0.75)