我正在寻找一种方法来识别生长季节,该生长季节由 Spring 最后一个霜冻日和秋季第一个霜冻日之间的天数大于 60 天组成。这个问题的一般版本是这样的。如果我有一个像 testVec 这样的数字向量,我想要值的开始和结束范围的项目编号,其中项目的数量为 5 或更大,并且所有项目都大于 0。
testVec <- c(1,3,4,0, 1, -5, 6, 0, 1,3,4,6,7,5,9, 0)
在这个例子中,相关范围是 1,3,4,6,7,5,9 即 testVec[9]
到 testVec[15]
最佳答案
一个选项可能是:
testVec[with(rle(testVec > 0), rep(lengths * values >= 5, lengths))]
[1] 1 3 4 6 7 5 9
这里的想法是,首先创建小于或等于零和大于零的值运行。其次,它检查大于零的值的运行长度是否为 5 或更长。最后,它为大于零且长度为 5 或更大的值的运行对原始向量进行子集化。
关于R 如何在向量中找到一系列共同值(识别生长季节),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64091829/