I believe the original poster was looking for runs of consecutive
values.  Here's a generalization of Tony's solution:

findlong = function(seq){
    rr = rle(seq)
    lens = rr$length
    lens[rr$value == FALSE] = 0
    ll = which.max(lens)
    start = cumsum(c(1,rr$length))[ll]
    list(start=start,length=rr$lengths[ll])
}

sq <- c(1, 2, 3, 4, 4, 4, 5, 6, 5, 4, 3, 2, 1, 1, 1, 1, 1)

Then

findlong(diff(sq) == 1)       # starts at position 1, run of 3
$start
[1] 1

$length
[1] 3

findlong(diff(sq) == -1)      # starts at position 8, run of 5
$start
[1] 8

$length
[1] 5

                                       - Phil Spector
                                         Statistical Computing Facility
                                         Department of Statistics
                                         UC Berkeley
                                         [EMAIL PROTECTED]



On Tue, 13 May 2008, Tony Plate wrote:

If the increases or decreases could be any size, rle(sign(diff(x))) could do it:

x <- c(1, 2, 3, 4, 4, 4, 5, 6, 5, 4, 3, 2, 1, 1, 1, 1, 1)
r <- rle(sign(diff(x)))
r
Run Length Encoding
 lengths: int [1:5] 3 2 2 5 4
 values : num [1:5] 1 0 1 -1 0
i1 <- which(r$lengths==max(r$lengths[r$values==1]) & r$values==1)[1]
i2 <- which(r$lengths==max(r$lengths[r$values==-1]) & r$values==-1)[1]
i1
[1] 1
i2
[1] 4
rbind(up=c(start=cumsum(c(1, r$lengths))[i1], len=r$lengths[i1]),
down=c(start=cumsum(c(1, r$lengths))[i2], len=r$lengths[i2]))
    start len
up       1   3
down     8   5


Ingmar Visser wrote:
rle(diff(sq)) could be helpful here,
best, Ingmar

On May 13, 2008, at 11:19 PM, Marko Milicic wrote:

Hi all R helpers,

I'm trying to comeup with nice and elegant way of "detecting" consecutive
increases/decreases in the sequence of numbers. I'm trying with combination
of which() and diff() functions but unsuccesifuly.

For example:

sq <- c(1, 2, 3, 4, 4, 4, 5, 6, 5, 4, 3, 2, 1, 1, 1, 1, 1);

I'd like to find way to calculate

a) maximum consecutive increase = 3 (from 1 to 4)
b) maximum consecutive decrease = 5 (from 6 to 1)

All ideas are highly welcomed!





--
This e-mail and any files transmitted with it are confid...{{dropped:14}}

______________________________________________
R-help@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.

______________________________________________
R-help@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.


______________________________________________
R-help@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.


______________________________________________
R-help@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.

Reply via email to