舍入到最接近的指定整数集

时间:2017-10-16 13:53:14

标签: r

如果我想将数据框中的每个值四舍五入到最接近的值集,例如c(0, 1)。我该怎么做呢?

>toRound <- c(-2, 3, 4, 1, -1, 0, .5)
>magicFunction(toRound, c(0, 1)) 
c(0, 1, 1, 1, 0, 0, 1)

>magicFunction(toRound, c(-1, 1))
c(-1, 1, 1, 1, -1, round(runif(1,min=0,max=1), 0), 1)

1 个答案:

答案 0 :(得分:2)

尝试

toRound <- c(-2, 3, 4, 1, -1, 0, .5)
ifelse(toRound > 1, 1, ifelse(toRound < 0, 0, round(toRound)))
[1] 0 1 1 1 0 0 0

作为一个功能:

foo <- function(x, Min, Max) ifelse(x > Max, Max, ifelse(x < Min, Min, round(x)))
foo(toRound, -1, 1)
[1] -1  1  1  1 -1  0  0

请注意,在我的系统上,.5会四舍五入为较小的整数。如果你想要四舍五入 - 你的预期输出建议 - 你可以使用这篇文章中给出的解决方案Round up from .5 in R