Hello,

Try the following


d <- read.table(text="
id VI
1 -10
2  -4
3  5
4 -2
5 -5
6 -3
7 -2
8 -1
9  4
10 8
", header = TRUE)


fun <- function(n, thres){
    r <- rle(!d$VI < thres)
    inx <- which(!r$values & r$lengths >= n)
    csum <- cumsum(r$lengths)
    from <- ifelse(inx == 1, 1, csum[inx - 1] + 1)
    cbind(from = from, to = csum[inx])

}
fun(5, 1)
fun(2, 1)


Hope this helps,

Rui Barradas
Em 21-08-2012 18:54, inti luna escreveu:
Hello,

I have 2 variable: one is an "id" sequence from 1:1000 and the other is
variable with real values "VI" from -15.0 to 20.0 and I want to detect id
values that have indicator values less than a certain threshold, for
example (x=1) BUT that are in sequence equal or longer than 5.

For instance, in the following column I want to recognize the sequence from
"id" 4 to 8 that are values with a "VI" values lower than 1 in a sequence
of 5, and not the id values 1 and 2 which are values with VI lower than my
threshold but the sequence is lower than 5.

id VI

1 -10
2  -4
3  5
4 -2
5 -5
6 -3
7 -2
8 -1
9  4
10 8

  Any help would be appreciated!

Inti

        [[alternative HTML version deleted]]

______________________________________________
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