2016-03-30 5 views
0

Я новичок здесь, а не профессионал в Р. Надеюсь, вы, ребята, можете мне помочь.Идентифицировать одинаковые последовательные значения в векторе в R

У меня есть вектор ls и вы хотите определить по крайней мере три одинаковые значения.

Пример:

ls <- c(1, -1, 1, -1, -1, -1, 1, 1, 1, -1, -1, -1, -1, -1, -1) 

Теперь я хочу, чтобы определить позицию в Ls, где минимум из трех последовательно -1, анализирует начало. Здесь вывод (позиции) будет:

[1] 4 10 

У вас есть идеи? Благодарю.

ответ

1

Вы можете использовать rle

r <- rle(ls) 
(cumsum(r$lengths)-r$lengths+1)[r$value==-1 & r$length>=3] 
#> [1] 4 10 

cummulative сумма пробег длины дают концы прогонов. Вычитание длин дает позицию сразу перед тем, как они начинаются, поэтому добавьте один назад. Подмножество результата для мест, где значение равно -1, а длина выполнения не менее 3.

+0

Спасибо! Он отлично работал. – martin1009

Смежные вопросы