找出连续 "TRUE" 参数的最大长度和平均长度

Find the maximum and mean length of the consecutive "TRUE"-arguments

我从每天的风速时间序列开始。我想检查两个时间段之间特定阈值变化下的平均和最大连续天数。这就是我的进展:我将数据子集化为值低于阈值的行,并确定了连续的天数。

我现在有一个如下所示的数据框:

dates   consecutive_days
1970-03-25  NA
1970-04-09  TRUE
1970-04-10  TRUE
1970-04-11  TRUE
1970-04-12  TRUE
1970-04-15  FALSE
1970-05-08  TRUE
1970-05-09  TRUE
1970-05-13  FALSE

我接下来要做的是找出连续 "TRUE" 参数的最大长度和平均长度。 (在这种情况下为:最大值=4;平均值=3)。

这是使用 rle 的一种方法:

# construct sample data.frame:
set.seed(1234)
df <- data.frame(days=1:12, consec=sample(c(TRUE, FALSE), 12, replace=T))

# get rle object
consec <- rle(df$consec)

# max consecutive values
max(consec$lengths[consec$values==TRUE])
# mean consecutive values
mean(consec$lengths[consec$values==TRUE])

引用自?rlerle

Compute[s] the lengths and values of runs of equal values in a vector

我们保存结果,然后子集到连续的 TRUE 观察值以计算平均值和最大值。

您可以轻松地将其组合成一个函数,或者简单地连接上面的结果:

myResults <- c("max"=max(consec$lengths[consec$values==TRUE]), 
               "mean"= mean(consec$lengths[consec$values==TRUE]))