【问题标题】:Find the maximum and mean length of the consecutive "TRUE"-arguments查找连续“TRUE”参数的最大和平均长度
【发布时间】:2016-09-17 16:04:18
【问题描述】:

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

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

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)。

【问题讨论】:

  • 预期输出是什么,您尝试过什么?
  • 我从每天的风速时间序列开始。我想检查两个时间段之间某个阈值变化下的平均和最大连续天数。这就是我已经走了多远:我将数据子集化为具有低于阈值的值的行,并确定了连续的天数。现在我剩下要做的就是找到“TRUE”参数的最大和平均长度......
  • 您的示例数据将为最大值和平均值提供相同的值,因此不确定它是否非常清楚地说明了您的问题。
  • 是的,我的意思是这只是我数据的一个小样本。我将编辑示例。但是你明白我的问题了吗?你知道怎么解决吗?
  • 没有。这将是我的最终结果。因此,如果一个公式或其他东西只返回一个最大和平均长度值,每个。就够了

标签: r string-length


【解决方案1】:

这是使用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

计算[s]向量中等值游程的长度和值

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

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

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

【讨论】:

    猜你喜欢
    • 2016-11-04
    • 2012-11-08
    • 2020-10-15
    • 1970-01-01
    • 2013-09-13
    • 1970-01-01
    • 2014-06-11
    • 1970-01-01
    • 2011-08-12
    相关资源
    最近更新 更多