Esta questão é uma continuação desta: Calcule o olhar mútuo a partir de olhares individuais .
Estou trabalhando com dados de olhar em sequências de perguntas e respostas em conversas tradicionais e quero saber quando exatamente e por quanto tempo há olhar mútuo , ou seja, uma pessoa olhando para outra pessoa e essa outra pessoa olhando de volta. A resposta à pergunta anterior lidou lindamente com sequências de perguntas e respostas nas quais havia apenas olhar mútuo entre o falante e os ouvintes, mas não consegue lidar com uma situação em que também há olhar mútuo entre os dois ouvintes.
O tipo de dados que tenho é ilustrado aqui:
GazeID Sequ Utterance Q_by Answ_by Gaze_by Gaze_to Role start end Gaze_pair
1: 1 55 where...? A B A B Speaker 100 700 AB
2: 2 55 where...? A B B A Answerer 0 200 AB
3: 3 55 where...? A B B C Answerer 230 500 BC
4: 4 55 where...? A B C B NonAnswerer 120 620 BC
5: 5 55 where...? A B C A NonAnswerer 650 700 AC
Aqui, há um olhar mútuo (i) entre Speaker
e , Answerer
mas também entre Answerer
e NonAnswerer
, de modo que a saída desejada é esta:
Sequ Utterance MG_start MG_end MG_dur Gaze_pair
1: 55 where...? 100 200 100 AB
2: 55 where...? 230 500 270 BC
Tentei adaptar a solução da questão anterior, que foi construída na data.table
função foverlaps
, para este cenário, mas recebi um erro.
NB: Pode haver, em qualquer sequência de perguntas e respostas, múltiplos olhares mútuos e pode haver olhar mútuo entre (i) Speaker_Answerer
, (ii) Speaker-NonAnswerer
e (iii) Answerer-NonAnswerer
.
Qualquer ajuda com essa questão será muito apreciada.
Dados reproduzíveis :
gazes <- structure(list(GazeID = 1:5, Sequ = c(55, 55, 55, 55, 55), Utterance = c("where...?",
"where...?", "where...?", "where...?", "where...?"), Q_by = c("A",
"A", "A", "A", "A"), Answ_by = c("B", "B", "B", "B", "B"), Gaze_by = c("A",
"B", "B", "C", "C"), Gaze_to = c("B", "A", "C", "B", "A"), Role = c("Speaker",
"Answerer", "Answerer", "NonAnswerer", "NonAnswerer"), start = c(100L,
0L, 230L, 120L, 650L), end = c(700L, 200L, 500L, 620L, 700L),
Gaze_pair = c("AB", "AB", "BC", "BC", "AC")), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA, -5L))