首页 > 解决方案 > 在 R 中对多个条件使用 rle() 函数

问题描述

我有以下数据集。

输入(s1[1:10,])

structure(list(V1 = c(1, 1, 1, 5, 5, 2, 2, 3, 1, 1), V2 = c(0, 
0.55, 0.9, 3.125, 5, 19.96666667, 12.25, 35.15, 5.4, 58.58)), 
na.action = structure(260:270, .Names = c("260", 
"261", "262", "263", "264", "265", "266", "267", "268", "269", 
"270"), class = "omit"), row.names = c("33", "317", "6", 
"202","250", "185", "28", "251", "218", "116"), class = 
"data.frame")

我想获得一个或多个满足以下条件的值:

[1] 计算(总和)当 V2(第二列)在至少 3 个连续时间步长内低于 1 且所有时间步长 V1 的值 <= 4 时连续出现的次数。

[预期输出]

在上面的例子中,答案应该是 1,这对应于三个四个时间步长。只有一个案例满足上述示例中的标准。

这是另一个案例:

structure(list(V1 = c(1, 1, 1, 5, 5, 2, 2, 3, 1, 1), V2 = c(0, 
0.55, 0.9, 3.125, 5, 19.96666667, 12.25, 0.1, 0.3, 0.5)), 
na.action = structure(260:270, .Names = c("260", 
"261", "262", "263", "264", "265", "266", "267", "268", "269", 
"270"), class = "omit"), row.names = c("33", "317", "6", 
"202","250", "185", "28", "251", "218", "116"), class = 
"data.frame")

在这种情况下,由于三个时间步长,答案应该是 2。

到目前为止我所拥有的:

我能够使用 rle() 函数计算连续出现的次数:

with(rle(s1$V2 < 1), sum(lengths[values] >= 3))

但是我如何在此处添加其他条件(对于所有时间步,V1 应该 <=4。

关于如何在 R 中应用它的任何想法?

标签: rthreshold

解决方案


推荐阅读