我有一个大约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
答案 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