Find which interval row in a data frame that each element of a vector belongs in

后端 未结 7 802
一整个雨季
一整个雨季 2020-11-29 06:29

I have a vector of numeric elements, and a dataframe with two columns that define the start and end points of intervals. Each row in the dataframe is one interval. I want to

7条回答
  •  Happy的楠姐
    2020-11-29 06:51

    Here is kind of a "one-liner" which (mis-)uses foverlaps from the data.table package but David's non-equi join is still more concise:

    library(data.table) #v1.10.0
    foverlaps(data.table(start = elements, end = elements), 
              setDT(intervals, key = c("start", "end")))
    #   phase start end i.start i.end
    #1:     a     0 0.5     0.1   0.1
    #2:     a     0 0.5     0.2   0.2
    #3:     a     0 0.5     0.5   0.5
    #4:    NA    NA  NA     0.9   0.9
    #5:     b     1 1.9     1.1   1.1
    #6:     b     1 1.9     1.9   1.9
    #7:     c     2 2.5     2.1   2.1
    

提交回复
热议问题