r - 如何在 R 中舍入到 0.25 或 0.75,而不是 0.00 或 0.50?

标签 r rounding

我正在使用 R,我想将我的数据四舍五入到最接近的 0.250.75,但不包括 0.00 或 0.50。

例如,如果我想四舍五入到最接近的 0.00 或 0.50,我会这样做:

test <- seq(1,10,0.33) 
[1] 1.00 1.33 1.66 1.99 2.32 2.65 2.98 3.31 3.64 3.97 4.30 4.63 4.96 5.29 5.62 5.95 6.28 6.61 6.94 7.27 7.60 7.93 8.26 8.59 8.92 9.25 9.58 9.91

四舍五入到 0.00 或 0.50:

round(test * 2)/2
[1]  1.0  1.5  1.5  2.0  2.5  2.5  3.0  3.5  3.5  4.0  4.5  4.5  5.0  5.5  5.5  6.0  6.5  6.5  7.0  7.5  7.5  8.0  8.5  8.5  9.0  9.0  9.5 10.0

我可以对 0.25 的倍数做同样的事情。我该怎么做才能将这些数字四舍五入为 0.25 或 0.75,不包括 0.50 和 0.00?

最佳答案

round((test + 0.25) * 2)/2 - 0.25 怎么样?对于您的 test,它给出:

# [1] 0.75 1.25 1.75 1.75 2.25 2.75 2.75 3.25 3.75 3.75 4.25 4.75 4.75 5.25 5.75
#[16] 5.75 6.25 6.75 6.75 7.25 7.75 7.75 8.25 8.75 8.75 9.25 9.75 9.75

你也可以round((test - 0.25) * 2)/2 + 0.25,给

# [1] 1.25 1.25 1.75 1.75 2.25 2.75 2.75 3.25 3.75 3.75 4.25 4.75 4.75 5.25 5.75
#[16] 5.75 6.25 6.75 6.75 7.25 7.75 7.75 8.25 8.75 8.75 9.25 9.75 9.75

整数在舍入方向上的行为不同。以 1 为例。第一种情况下舍入为 0.75,而第二种情况下舍入为 1.25。整数在这里是“灰色地带”;你需要决定你想要的方向。

关于r - 如何在 R 中舍入到 0.25 或 0.75,而不是 0.00 或 0.50?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38985186/

相关文章:

r - 使用实时数据创建 Shiny 的应用程序

r - 将相关矩阵图形保存为 PDF

google-bigquery - 如何在 BigQuery 中将数值转换为货币?

C++:奇怪的 float 学结果

Clojure:减法中的不一致舍入

python - 四舍五入到最接近的步长

r - fread 无法读取第一列为空的 .csv 文件

从 RStudio 服务器运行 GUI 分析包

r - 如何用小写字母替换最后一个点后的某些字符

c++ - 如何在 C++ 中编写好的 round_double 函数?