Collapse rows with overlapping ranges

前端 未结 3 2120
遇见更好的自我
遇见更好的自我 2020-11-30 09:35

I have a data.frame with start and end time:

ranges<- data.frame(start = c(65.72000,65.72187, 65.94312,73.75625,89.61625),stop = c(79.72187,79.72375,79.9         


        
3条回答
  •  暗喜
    暗喜 (楼主)
    2020-11-30 09:49

    You can try this:

    library(dplyr)
    ranges %>% 
           arrange(start) %>% 
           group_by(g = cumsum(cummax(lag(stop, default = first(stop))) < start)) %>% 
           summarise(start = first(start), stop = max(stop))
    
    # A tibble: 2 × 3
    #      g    start      stop
    #           
    #1     0 65.72000  87.75625
    #2     1 89.61625 104.94062
    

提交回复
热议问题