Collapse rows with overlapping ranges
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 # <int> <dbl> <dbl> #1 0 65.72000 87.75625 #2 1 89.61625 104.94062