# Re: [R] overlapping intervals

From: Giovanni Coppola <gcoppola_at_ucla.edu>
Date: Tue 17 Oct 2006 - 22:56:18 GMT

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@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@stat.math.ethz.ch mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> 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?

R-help@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. Received on Wed Oct 18 09:07:14 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Wed 18 Oct 2006 - 01:30:28 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.