2017-07-18 24 views
0

我有大约180000个数据点,看起来像这样 - Figure1。它的0和5以不规则的间隔。查找条件y值的x轴位置

data<- 0,0,0,5,5,5,0,0,0,5,5,5,0,0.. and so on. 

我想找到开始和结束的y值是5(用蓝色标记)的索引。图中附有图。我正在使用R进行分析。我尝试使用changepoint软件包中的cpt.meanvar函数,但它并未提供所有更改点位置。有另一种方法吗?

+0

这是不太清楚。你的'data'变量似乎是y,但是x是什么?索引?上述一小部分数据的答案是什么?它会是开始= c(4,10)结束= c(6,12)? – G5W

回答

2
#DATA 
mydata<- c(0,0,0,5,5,5,0,0,0,5,5,5,0,0) 

#Find out which indices have 5 
v = which(mydata == 5) 

#Split into groups of consecutive integers and get the range for each sub-group 
lapply(split(v, cumsum(c(1, diff(v) != 1))), function(x) range(x)) 
#$`1` 
#[1] 4 6 

#$`2` 
#[1] 10 12 

data.frame把可能更容易

setNames(data.frame(do.call(rbind, lapply(split(v, cumsum(c(1, diff(v) != 1))), 
              function(x) range(x)))), 
     c("Start", "End")) 
# Start End 
#1  4 6 
#2 10 12 
+0

非常感谢!这正是我正在寻找的 – ACE