[R] Identifying sequences
christiaan pauw
cjpauw at gmail.com
Wed Jun 1 17:12:29 CEST 2011
Thanks to David, Thierry and Jonathan for your help.
I have been able to put this function together
a=1:10
b=20:30
c=40:50
x=c(a,b,c)
seq.matrix <- function(x){
lower<- x[which(diff(x) != 1)]
upper <- x[which(diff(x) != 1)+1]
extremities <- c(1,lower, upper,x[length(x)])
m <- data.frame(matrix(extremities[order(extremities)],ncol=2,byrow=TRUE,dimnames=list(rows=paste("group",1:(length(lower)+1),sep=""),cols=c("lower","upper"))))
m$length=m$upper-m$lower+1
m
}
s.m=seq.matrix(x)
s.m
lower upper length
group1 1 10 10
group2 20 30 11
group3 40 50 11
One can then make a test to see if a certain value (say 9) falls
within one of the groups and use that to find the group name or lower
or upper border
s.m.test=function(s.m,i){which(s.m[,1] <i & i < s.m[,2])}
s.m.test(s.m,i=9)
[1] 1
e.g.
row.names(s.m)[s.m.test(s.m,i=9)]
[1] "group1"
Cheers
Christiaan
On 1 June 2011 14:31, Jonathan Daily <biomathjdaily at gmail.com> wrote:
>
> I am assuming in this case that you are looking for continuity along
> integers, so if you expect noninteger values this will not work.
>
> You can get the index of where breaks can be found in your example using
>
> which(diff(x) > 1)
>
> On Wed, Jun 1, 2011 at 6:27 AM, christiaan pauw <cjpauw at gmail.com> wrote:
> > Hallo Everybody
> >
> > Consider the following vector
> >
> > a=1:10
> > b=20:30
> > c=40:50
> > x=c(a,b,c)
> >
> > I need a function that can tell me that there are three set of continuos
> > sequences and that the first is from 1:10, the second from 20:30 and the
> > third from 40:50. In other words: a,b, and c.
> >
> > regards
> > Christiaan
> >
> > [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > R-help at r-project.org 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.
> >
>
>
>
> --
> ===============================================
> Jon Daily
> Technician
> ===============================================
> #!/usr/bin/env outside
> # It's great, trust me.
More information about the R-help
mailing list