Использование функции rle () в R для нескольких условий - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть следующий набор данных.

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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...