计算和索引满足条件的连续行

时间:2016-03-08 20:49:55

标签: r

试图找到如何在R中干净地计算连续向量行的数量,使第一次向量条目<= c_1直到第一次向量条目>= c_2时间,c_1 < c_2。我还想获得一个索引,其中这些条目开始(或停止)满足所述条件。

例如

v1 <- c(1,2,3,4,5,4,3,NA, 2,1)

如果c_1=2c_2=3,则3个连续条目(前2个)满足条件,接下来的4个条目不满足,NA被丢弃,最后两个条目满足条件同样。因此,满足条件的连续条目的计数是3,2,连续条目开始的索引是1和9.

1 个答案:

答案 0 :(得分:0)

这是一个可能不是最有效的解决方案:

i<-1;dur_d<-NULL;index_w<-NULL
while(i < length(v1)){
  k<-0
  if(v1[i]<= 2 & is.na(v1[i])==F){
    count<-1;k<-1;index_w<-rbind(index_w,i)
    while(v1[i+k]<3 & is.na(v1[i+k])==F){
        count<-count+1;k=k+1}
  dur_d<-rbind(dur_d,count);
  }
  i<-i+k+1
}