R - 按定义的间隔切割

时间:2011-04-21 15:50:15

标签: r

R中是否有某种方法可以在没有任何中断的情况下按照定义的间隔进行切割?

例如,如果我想要精确区间[1,10]中的值;默认情况下,cut会将此间隔分隔为更小的间隔。

2 个答案:

答案 0 :(得分:39)

要切入预定义的时间间隔,您可以使用breaks参数指定中断的向量。

定义一些数据:

x <- sample(0:20, 100, replace=TRUE)
x

现在在0,10和20处剪切x:

cut(x, breaks=c(0, 10, 20), include.lowest=TRUE)

  [1] (10,20] [0,10]  [0,10]  (10,20] (10,20] (10,20] [0,10]  (10,20] (10,20]
 [10] (10,20] [0,10]  (10,20] (10,20] (10,20] [0,10]  (10,20] [0,10]  [0,10] 
 [19] [0,10]  (10,20] [0,10]  [0,10]  [0,10]  (10,20] [0,10]  (10,20] (10,20]
 [28] (10,20] (10,20] [0,10]  [0,10]  [0,10]  [0,10]  (10,20] [0,10]  [0,10] 
 [37] [0,10]  [0,10]  (10,20] (10,20] (10,20] (10,20] [0,10]  (10,20] [0,10] 
 [46] (10,20] [0,10]  (10,20] (10,20] [0,10]  [0,10]  (10,20] (10,20] (10,20]
 [55] [0,10]  [0,10]  (10,20] [0,10]  [0,10]  [0,10]  [0,10]  (10,20] (10,20]
 [64] (10,20] [0,10]  [0,10]  (10,20] (10,20] (10,20] (10,20] (10,20] (10,20]
 [73] (10,20] [0,10]  [0,10]  [0,10]  (10,20] [0,10]  (10,20] [0,10]  (10,20]
 [82] [0,10]  [0,10]  (10,20] [0,10]  [0,10]  [0,10]  (10,20] (10,20] [0,10] 
 [91] [0,10]  [0,10]  (10,20] (10,20] [0,10]  [0,10]  [0,10]  [0,10]  (10,20]
[100] (10,20]
Levels: [0,10] (10,20]

答案 1 :(得分:14)

这样的东西?每个0.2从0到1中断。

> a <- runif(100)
> cut(a, seq(from = 0, to = 1, by = 0.2))
  [1] (0,0.2]   (0.8,1]   (0.8,1]   (0.6,0.8] (0.6,0.8] (0,0.2]   (0.6,0.8]
  [8] (0.2,0.4] (0.8,1]   (0.4,0.6] (0.8,1]   (0.4,0.6] (0.8,1]   (0.6,0.8]
 [15] (0.8,1]   (0,0.2]   (0.8,1]   (0.8,1]   (0.6,0.8] (0.6,0.8] (0.2,0.4]
 [22] (0.4,0.6] (0.6,0.8] (0.2,0.4] (0.6,0.8] (0.6,0.8] (0.6,0.8] (0,0.2]  
 [29] (0,0.2]   (0.2,0.4] (0,0.2]   (0,0.2]   (0,0.2]   (0,0.2]   (0,0.2]  
 [36] (0.6,0.8] (0.2,0.4] (0.6,0.8] (0.6,0.8] (0.8,1]   (0.2,0.4] (0.4,0.6]
 [43] (0.4,0.6] (0.6,0.8] (0.2,0.4] (0.6,0.8] (0.6,0.8] (0.6,0.8] (0.4,0.6]
 [50] (0.6,0.8] (0.6,0.8] (0,0.2]   (0.2,0.4] (0.8,1]   (0.8,1]   (0.8,1]  
 [57] (0.6,0.8] (0.2,0.4] (0.2,0.4] (0,0.2]   (0.8,1]   (0.8,1]   (0.2,0.4]
 [64] (0.8,1]   (0.2,0.4] (0.4,0.6] (0.8,1]   (0,0.2]   (0.4,0.6] (0,0.2]  
 [71] (0.4,0.6] (0.8,1]   (0.6,0.8] (0.4,0.6] (0,0.2]   (0.2,0.4] (0.4,0.6]
 [78] (0,0.2]   (0.2,0.4] (0.8,1]   (0,0.2]   (0.4,0.6] (0.8,1]   (0,0.2]  
 [85] (0,0.2]   (0.2,0.4] (0.2,0.4] (0.4,0.6] (0.8,1]   (0.2,0.4] (0,0.2]  
 [92] (0.6,0.8] (0.2,0.4] (0.2,0.4] (0.8,1]   (0.2,0.4] (0.4,0.6] (0,0.2]  
 [99] (0,0.2]   (0,0.2]  
Levels: (0,0.2] (0.2,0.4] (0.4,0.6] (0.6,0.8] (0.8,1]