圆形序列的数字到选定的数字

时间:2016-07-13 19:15:10

标签: r

我有一个从0到1的数字向量。我想将它们分成X个组 - 例如X=5,然后将数字四舍五入到5组:0中的所有数字到0.2将为0,从0.2到0.4都将是0.2,等等。

例如,如果我有x <- c(0.34,0.07,0.56)X=5,就像上面的解释一样,我会得到(0.2, 0, 0.4)

到目前为止,我发现的唯一方法是循环遍历整个矢量。有更优雅的方式吗?

3 个答案:

答案 0 :(得分:4)

您可以这样做:

floor(x*X)/X
# [1] 0.2 0.0 0.4

更多测试案例:

X = 10
floor(x*X)/X
# [1] 0.3 0.0 0.5
X = 2
floor(x*X)/X
# [1] 0.0 0.0 0.5
X = 5
floor(x*X)/X
# [1] 0.2 0.0 0.4

数据

x <- c(0.34,0.07,0.56)

答案 1 :(得分:2)

尝试:

cut.alt <- function(x, X) {
  out <- cut(x, breaks=(1:X-1)/X)
  levels(out) <- as.character((1:X-1)/X)
  out
}
设置为cut的中断的

(1:X-1)/X将矢量x划分为OP请求的组。然后将级别更改为截止值给出了答案。

答案 2 :(得分:1)

或使用plyr

library(plyr)
round_any(x, 1/X,floor)

# [1] 0.2 0.0 0.4