如何获得一个向量,用于确定元素在R中属于哪个区间

Lad*_*aďo 2 r intervals

我需要将矢量值排序为自定义间隔,然后确定哪个元素属于哪个区间.

例如,如果向量是:

x <- c(1,4,12,13,18,24)
Run Code Online (Sandbox Code Playgroud)

间隔是:

interval.vector <- c(1,7,13,19,25)

1st interval:    1 - 7
2nd interval:    7 - 13
3rd interval:   13 - 19
4th interval:   19 - 25
Run Code Online (Sandbox Code Playgroud)

...我如何结合xinterval.vector得到这个:

element:   1   4   12   13   18   24
interval:  1   1    2    2    3    4
Run Code Online (Sandbox Code Playgroud)

Rom*_*rik 6

你也可以使用cut.

x <- c(1,4,12,13,18,24)
interval.vector <- c(1,7,13,19,25)
x.cut <- cut(x, breaks = interval.vector, include.lowest = TRUE)

data.frame(x, x.cut, group = as.numeric(x.cut))

   x   x.cut group
1  1   [1,7]     1
2  4   [1,7]     1
3 12  (7,13]     2
4 13  (7,13]     2
5 18 (13,19]     3
6 24 (19,25]     4
Run Code Online (Sandbox Code Playgroud)

另一种选择是非常有效的findInterval功能,但我不确定这种解决方案在不同变体上的稳健性x

findInterval(x, interval.vector + 1L, all.inside = TRUE)
## [1] 1 1 2 2 3 4
Run Code Online (Sandbox Code Playgroud)