我正在使用 R,我想将我的数据四舍五入到最接近的 0.25 或 0.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/