找出连续 "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])
引用自?rle
、rle
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]))
我从每天的风速时间序列开始。我想检查两个时间段之间特定阈值变化下的平均和最大连续天数。这就是我的进展:我将数据子集化为值低于阈值的行,并确定了连续的天数。
我现在有一个如下所示的数据框:
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])
引用自?rle
、rle
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]))