【问题标题】:How to round to specific decimal numbers in R如何在R中四舍五入到特定的十进制数字
【发布时间】:2019-11-13 04:24:21
【问题描述】:

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

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

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

感谢您的帮助!

【问题讨论】:

  • 我已经给了你一个答案@Fumia,但下次尝试让你的问题可重现。这样更好,并导致更快的响应。在这个article 中有一些未来需要考虑的指导方针。
  • @JohanRosa 会的。对论坛来说还是新手,将来会确保措辞正确。感谢您的帮助!
  • 不要忘记标记或选择正确的答案并为有帮助的答案点赞。欢迎来到 SO!!

标签: r rounding latitude-longitude


【解决方案1】:

在 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

【讨论】:

  • 非常感谢您的帮助和及时回复!
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-13
    • 2014-11-26
    • 1970-01-01
    • 1970-01-01
    • 2011-06-22
    相关资源
    最近更新 更多