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]]
______________________________________________
[email protected] 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.
______________________________________________
[email protected] 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.