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

后端 未结 7 666
一整个雨季
一整个雨季 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条回答
  •  有刺的猬
    2020-11-29 06:42

    For completion sake, here is another way, using the intervals package:

    library(tidyverse)
    elements <- c(0.1, 0.2, 0.5, 0.9, 1.1, 1.9, 2.1)
    
    intervalsDF <- 
      frame_data(  ~phase, ~start, ~end,
                   "a",     0,      0.5,
                   "b",     1,      1.9,
                   "c",     2,      2.5
      )
    
    library(intervals)
    library(rlist)
    
    interval_overlap(
      Intervals(intervalsDF %>% select(-phase) %>% as.matrix, closed = c(TRUE, TRUE)),
      Intervals(data_frame(start = elements, end = elements), closed = c(TRUE, TRUE))
    ) %>% 
      list.map(data_frame(interval_index = .i, element_index = .)) %>% 
      do.call(what = bind_rows)
    
    # A tibble: 6 × 2
    #  interval_index element_index
    #                    
    #1              1             1
    #2              1             2
    #3              1             3
    #4              2             5
    #5              2             6
    #6              3             7
    

提交回复
热议问题