在时间序列中,找到满足条件的最长后续时间段

时间:2016-06-27 11:33:21

标签: r loops nested-loops

我需要搜索数据框,如下所示: 如果等级在时间= 1时超过50%,则在时间= 3时降至50%以下,然后在时间= 4时低于时间= 7时低于时间,然后在时间8时低于等于12%等等。 ...然后它高于2秒,然后是3秒,然后是4秒等。 ...所以最终的结果是最大时间超过50%,在这种情况下是4秒(根据下面的数据框部分)。 所以我需要将值4分配给max(maxGradeTimePeriod) 这个简单的代码好吗?提前谢谢。

这是我迄今为止所尝试过的(许多尝试中的一次!):

 <tr ng-repeat="d in $data" >

示例数据框:

 <tr ng-repeat="d in data" >

1 个答案:

答案 0 :(得分:0)

假设每行是一个时间单位,请尝试:

y <- rle(x$grade >= 0.5)              # Find clusters of values not below 0.5
max(y$length[which(y$values)])        # Find which TRUE cluster is the largest
# [1] 4

可能是时间点没有均匀间距。在这种情况下,请尝试:

x2 <- rle(x$grade >= 0.5)$length      # Get all clusters
x3 <- rep(seq_along(x2), x2)          # Make a vector that specifies cluster per value
time <- c(0, diff(x$time))            # Make a new vector with time differences 
y <- aggregate(time ~ x3, FUN=sum)    # Aggregate the sum of time per cluster
max(y$time)                           # Take the max
# [1] 4