连续值低于阈值

时间:2015-04-04 23:25:31

标签: r

我有一个大约1000年PDSI值的向量,范围从6到-6。我希望找到一种快速的搜索方式,当连续四年或更多年时,< = -2值。此外,我需要将数据保存在与原始1000相同长度的矢量中,以便我可以将它们一起绘制。最终产品甚至可以是逻辑矢量。这是我拥有的和我想要的一个例子。

Original <- c(1,6,5,-2,-6,-4,-2,0,1,-2,-3,0) 
New <- c(0,0,0,1,1,1,1,0,0,0,0,0) # expected output

1 个答案:

答案 0 :(得分:2)

您可以尝试以下

x <- c(rep(-2, 5), rep(0, 3), rep(-2, 4), rep(0,6), rep(5, 2), rep(-2, 6), rep(-6, 2))
    (r <- rle(x))
    ##  Run Length Encoding
    ##    lengths: int [1:7] 5 3 4 6 2 6 2
    ##    values : num [1:7] -2 0 -2 0 5 -2 -6
    (r$lengths[r$lengths > 3 & r$values== -2]) # length of each sequence
    ## [1] 5 4 6

获得仅具有&#34; -2&#34;序列的载体。你可以尝试

r$values[r$values != -2] <- 0
rep(r$values,  r$lengths)

##  [1] -2 -2 -2 -2 -2  0  0  0 -2 -2 -2 -2  0  0  0  0  0  0  0  0 -2 -2 -2 -2 -2 -2  0  0