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.