Как найти количество наблюдений между первым наблюдением и первыми двумя последовательными отрицательными наблюдениями в r - PullRequest
3 голосов
/ 25 мая 2020

У меня большой фрейм данных, и мне нужна функция для автоматизации этого поиска. В основном я хочу узнать, сколько наблюдений находится между первым наблюдением и первыми двумя последовательными отрицательными наблюдениями.

Пример:

x <- c(2, 1, 9, 3, 4, -6, 5, 6, -7, -1)

Предполагая, что это мои данные, я хочу подсчитать количество точек данных от 2 до -7.

Мне нужно сделать это в р.

Помощь приветствуется: D !!!

Ответы [ 2 ]

2 голосов
/ 25 мая 2020

Вы можете сделать:

which.max(cumsum(x < 0) == 2)

[1] 9
1 голос
/ 25 мая 2020

Вы можете использовать rle, чтобы найти первые два последовательных отрицательных наблюдения например:

i <- rle(!(is.na(x) | x>=0))
j <- i$lengths > 1 & i$values
j <- if(any(j)) min(which(j))-1 else 0
if(j > 0) sum(i$lengths[seq_len(j)])-1 else 0
#[1] 7
...