поиск совпадающих последовательных строк в r - PullRequest
1 голос
/ 07 мая 2019

Возможно ли однострочное решение для этого примера?

df = data.frame('First' = c('T','T','V','V','A','E'),'Last' = c(rep('Ng',3),'Smith','Wolf','Wolf'))
matches = (df$First[-1] == df$First)
which(matches == 'TRUE')
# [1] 1 3

Я хочу использовать Indedes, но не буду использовать временную переменную.

1 Ответ

0 голосов
/ 08 мая 2019

Возможно, вы могли бы использовать функцию rleid из data.table в сочетании с diff, например:

which(diff(rleid(df$First)) == 0)
[1] 1 3

Можно утверждать, что 2-й элемент и 4-й элемент в df$Firstсоответствует предыдущему значению (вместо 1-го и 3-го), поэтому which(c(F, diff(rleid(df$First)) == 0)) может быть более подходящим, что приводит к: [1] 2 4

...