Найти серию строк, которая максимизирует условие - PullRequest
0 голосов
/ 13 февраля 2019

Я хочу найти последовательность последовательных строк в наборе данных, где условие выполняется наиболее часто.

У меня есть два столбца, которые я могу использовать для этого;Либо один с единицами и нулями, которые чередуются в зависимости от наличия или отсутствия условия, либо столбец, который увеличивается в течение времени, в течение которого присутствует желаемое условие.Я предполагаю, что мне нужно будет использовать subset () , filter () и / или rle () , чтобы это произошло, но я нахожусь напотеря в том, как заставить его работать.

В этом примере я хочу найти 6 последовательных строк, которые максимизируют случаи, в которых happens встречается.

Учитывая входные данные:

library(data.frame)
df<-data.frame(time=c(1:10),happens=c(1,1,0,0,1,1,1,0,1,1),count=c(1,2,0,0,1,2,3,0,1,2))

Я хотел бы видеть в качестве выходных данных строки с 5 по 10 включительно в качестве выходных данных подмножества, используя столбцы happens или count, так как эта последовательность строк даст наивысший выходной результат.happens вхождений в 6 последовательных строках.

1 Ответ

0 голосов
/ 14 февраля 2019
library(zoo)
which.max( rollapply( df$happens, 6, sum) )
#[1] 5

Пятое окно из 6 строк, по-видимому, содержит максимальную сумму df $, происходит
Таким образом, ответ - строка 5: 10

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