overlapping intervals
Hello Jim, thank you very much for this elegant code. It does exactly what I need. I'll check findInterval as well. Thanks again Giovanni
On Oct 16, 2006, at 7:22 AM, jim holtman wrote:
Here is a more general way that looks for the transitions:
series1<-cbind(Start=c(10,21,40,300),End=c(20,26,70,350)) series2<-cbind(Start=c(25,60,210,500),End=c(40,100,400,1000)) x <- rbind(series1, series2) # create +1 for start and -1 for end x.s <- rbind(cbind(x[,1], 1), cbind(x[,2], -1)) #sort by start times x.s <- x.s[order(x.s[,1]),] # cumsum is a count of the transitions x.s <- cbind(x.s, cumsum(x.s[,2])) # c(1,2) is start and c(-1,1) is the end of an overlap cbind(x.s[x.s[,2] == 1 & x.s[,3] == 2, 1], x.s[x.s[,2] == -1 & x.s [,3] == 1, 1])
[,1] [,2] [1,] 25 26 [2,] 40 40 [3,] 60 70 [4,] 300 350 On 10/15/06, Giovanni Coppola <gcoppola at ucla.edu> wrote:
Hello everybody, I have two series of intervals, and I'd like to output the shared regions. For example: series1<-cbind(Start=c(10,21,40,300),End=c(20,26,70,350)) series2<-cbind(Start=c(25,60,210,500),End=c(40,100,400,1000))
> series1
Start End [1,] 10 20 [2,] 21 26 [3,] 40 70 [4,] 300 350
> series2
Start End [1,] 25 40 [2,] 60 100 [3,] 210 400 [4,] 500 1000 I'd like to have something like this as result:
> shared
Start End [1,] 25 26 [2,] 60 70 [3,] 300 350 I found this post, but the solution finds the regions shared across all the intervals. http://finzi.psych.upenn.edu/R/Rhelp02a/archive/59594.html Can anybody help me with this? Thanks Giovanni
______________________________________________ R-help at stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting- guide.html and provide commented, minimal, self-contained, reproducible code.
-- Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem you are trying to solve?