计算连续重复次数,并在每个重复字符串中返回最大值,如果超过阈值

时间:2017-01-18 08:58:43

标签: r

我正在处理重复的1和0的长串,表示作为深度函数的现象的存在。如果这种现象被标记超过1米,则认为它足以用于进一步分析,如果不是,则可能是由于实验误差。

我最终需要在每个位置(如果超过1米)显示这种现象的总厚度。

在虚拟数据集中,输入和预期输出如下所示:

#Depth from 0m to 10m with 0.5m readings
depth <- seq(0, 10, 0.5)

#Phenomenon found = 1, not = 0
phenomflag <- c(1,0,1,1,1,1,0,0,1,0,1,0,1,0,1,1,1,1,1,0)

我想要的输出是一个矢量:4,5(转换回2米和2.5米)

我试图使用

来解决这个问题
y <- rle(phenomflag)
z <- y$length[y$values ==1]

但是一旦我计算了,我就不知道如何:

a)从连续重复的每组中隔离1个最大数

b)限制到超过(x)的连续字符串 - 在。

之后这可能会更容易

提前致谢。

1 个答案:

答案 0 :(得分:0)

count在评论部分发布了一个很好的解决方案。

 y <- y <- rle(repeating series of 1's and 0's)

 x <- cbind(y$lengths,y$values) ; x[which(x[,1]>=3 & x[,2]==1)]

这导致重复超过阈值2的值,只有最大值。