R - Identifique uma sequência de elementos de linha por grupos em um dataframe
Considere o seguinte exemplo de quadro de dados:
> df
id name time
1 1 b 10
2 1 b 12
3 1 a 0
4 2 a 5
5 2 b 11
6 2 a 9
7 2 b 7
8 1 a 15
9 2 b 1
10 1 a 3
df = structure(list(id = c(1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 2L, 1L),
name = c("b", "b", "a", "a", "b", "a", "b", "a", "b", "a"
), time = c(10L, 12L, 0L, 5L, 11L, 9L, 7L, 15L, 1L, 3L)), .Names = c("id",
"name", "time"), row.names = c(NA, -10L), class = "data.frame")
Eu preciso identificar e gravar todas as sequênciasseq <- c("a","b")
, em que "a" precede "b" com base na coluna "hora", para cada ID. Nenhum outro nome entre "a" e "b" é permitido. O comprimento real da sequência é pelo menos 5. O resultado esperado para os dados da amostra é
a b
1 3 10
2 5 7
3 9 11
Existe uma pergunta semelhanteLocalizando linhas no dataframe R onde um valor de coluna segue uma sequência. No entanto, não está claro para mim como lidar com a coluna "id" no meu caso. É uma maneira de resolver o problema usando "dplyr"?