У меня есть таблица, где каждая строка содержит идентификатор темы и год. Моя цель - выделить для каждого предмета только те строки, которые вместе составляют самую длинную последовательность строк, в которой переменная year
увеличивается на 1 от одной строки к другой.
Я пробовал довольно много несколько вещей с сгруппированным фильтром, например создание вспомогательных переменных, которые кодируют, является ли год в одной строке на один больше или меньше года в предыдущей строке, и использование функции rle (). Но пока ничего не работает так, как должно.
Вот игрушечный пример моих данных. Обратите внимание, что количество строк различается по предметам и что обычно (некоторые) промежутки между годами есть. Также обратите внимание, что данные организованы таким образом, что значение года всегда увеличивается от одной строки к другой в пределах каждой темы. 1010 *
Чтобы уточнить, для этого фрагмента желаемый результат:
# A tibble: 3 x 2
subject year
<dbl> <dbl>
1 1 2015
2 1 2016
3 1 2017
(Обратите внимание, что субъект 2 отбрасывается, потому что у него нет последовательности лет, увеличивающейся на единицу.)
Должен быть элегантный способ сделать это с помощью dplyr!