У меня есть следующий набор данных.
dput (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] count (сумма) количество последовательных вхождений, когда V2 (второй столбец) ниже 1, по крайней мере, для 3 последовательных временных шагов И значение V1 составляет <= 4 за все временные шаги. </p>
[Ожидаемый результат]
В приведенном выше примере ответ должен быть 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 для всех временных шагов. </p>
Любая идея о том, как я могу применить это в R?