R - идентифицировать последовательные последовательности

У меня есть большой файл с 107635 строками и 3 столбцами: тема, области интереса (ROI) и номер испытания. ROI могут быть A, B, C, D, E, F. То, что я хочу сделать, это сохранить только те испытания, в которых в колонке ROI у меня есть последовательная последовательность B, C, D, при первом появлении B , Не имеет значения, сколько раз происходит B, C и D.

В приведенном ниже примере я могу сохранить ntrial 78 и 201, потому что первый раз, когда появился B, следовали C и D. Однако мне нужно удалить ntrial 10 и 400. В пробе 10 B, C и D не подряд. В испытании 400 при первом появлении B, B не сопровождается C и D.

Для вывода мне просто нужен столбец со значением 1 для сохраняемых испытаний в каждой строке и значением 0 для строк, соответствующих удаляемым испытаниям.

Любое предложение о том, как создать код, который может автоматизировать процедуру, без визуальной проверки каждого испытания?

Большое спасибо!

subject ROI ntrial output
sbj05   A   78     1
sbj05   A   78     1
sbj05   A   78     1
sbj05   A   78     1
sbj05   A   78     1
sbj05   A   78     1
sbj05   B   78     1
sbj05   B   78     1
sbj05   C   78     1
sbj05   D   78     1
sbj05   E   78     1
sbj05   E   78     1
sbj05   E   78     1
sbj05   A   201    1
sbj05   A   201    1
sbj05   A   201    1
sbj05   A   201    1
sbj05   A   201    1
sbj05   B   201    1
sbj05   C   201    1
sbj05   D   201    1
sbj05   E   201    1
sbj05   E   201    1
sbj05   E   201    1
sbj05   F   201    1
sbj05   F   201    1
sbj05   A   10     0
sbj05   A   10     0
sbj05   A   10     0
sbj05   A   10     0
sbj05   B   10     0
sbj05   A   10     0
sbj05   C   10     0
sbj05   D   10     0
sbj05   E   10     0
sbj05   E   10     0
sbj05   A   400    0
sbj05   A   400    0
sbj05   A   400    0
sbj05   B   400    0
sbj05   A   400    0
sbj05   B   400    0
sbj05   C   400    0
sbj05   C   400    0
sbj05   C   400    0
sbj05   D   400    0
sbj05   E   400    0
sbj05   E   400    0
sbj05   D   400    0

Ответы на вопрос(3)

Ваш ответ на вопрос