返回连续值满足条件的行-在先前行中包含值

时间:2019-01-21 13:32:54

标签: r dataframe indexing

我想跟进我最近的question

我有以下数据库,并且我正在寻找具有一定数量的连续值超过特定阈值的行,例如:

在以下数据帧df中。我想返回一个向量result,该向量指示哪些行满足以下条件:该行中至少5个连续值consecutiveentries低于threshold -1.2。

set.seed(125)

df <- data.frame(V1=rnorm(10,-1.5,.5),
                 V2=rnorm(10,-1.5,.5),
                 V3=rnorm(10,-1.5,.5),
                 V4=rnorm(10,-1.5,.5),
                 V5=rnorm(10,-1.5,.5),
                 V6=rnorm(10,-1.5,.5),
                 V7=rnorm(10,-1.5,.5),
                 V8=rnorm(10,-1.5,.5),
                 V9=rnorm(10,-1.5,.5),
                 V10=rnorm(10,-1.5,.5))
rownames(df) <- c(seq(1976,1985,1))

threshold = -1.2
consecutiveentries = 5
number <- consecutiveentries-1

result <- as.numeric(names(which(apply(df, 1, function(x) with(rle(x < threshold), any(lengths[values] > number))))))

result
[1] 1985

现在,我想更进一步。我想检查5个连续的数字consecutiveentries,没有行尾数限制。换句话说,如果在前一行中的值低于threshold-例如,在行1976的末尾有5个值低于threshold -1.2,并且有两个第一个值低于{{1} }在1977行的开头,那么我想为三种选择提供解决方案。返回第二行的名称(其中两行中的5个连续值均符合条件)为threshold,或者返回第一行的名称为result2。最后,将两个值都返回为result1

结果如下:

result3

0 个答案:

没有答案