У меня есть некоторые данные, которые содержат сообщения в разговоре.Мне нужно рассчитать время отклика для кого-то, чтобы ответить.У меня есть уникальные идентификаторы пользователя для обоих участников, однако, когда я использую приведенный ниже код, он только вычисляет разницу для каждого сообщения в беседе.Мне нужен способ рассчитать общую разницу между ответом и исходным сообщением.(т.е. если кто-то отправляет несколько исходных сообщений без ответа, мне нужно время между первым сообщением и первым ответом.)
convonlinetest <- convonline %>%
arrange(conversation_id, created_at) %>%
group_by(conversation_id) %>%
filter(n() > 1) %>%
mutate(timediff = created_at - lag(created_at))
Первый вопрос в стеке, большое спасибо за помощь заранее!
Редактировать: Некоторые примеры данных
structure(list(conversation_id = c(20000004844375, 20000004844378,
20000004913095, 20000004837800, 20000004808210, 20000004808210,
20000004837799, 20000004844377, 20000004808210, 20000004846076
), user_id = c(-33135869739921264, -33135869739921264,
57394627930234816,
-33135869739921264, -33135869739921264, -70893327136775872,
-33135869739921264,
-33135869739921264, -33135869739921264, -33135869739921264),
created_at = c("2016-05-31 16:46:27.614", "2016-05-31 16:46:28.387",
"2016-07-11 20:20:06.589", "2016-05-27 16:31:05.716", "2016-05-13
12:48:25.125",
"2016-05-10 18:58:30.396", "2016-05-27 16:31:05.451", "2016-05-31
16:46:27.981",
"2016-05-19 18:43:02.859", "2016-06-01 13:16:26.753"), course_name =
c("acct-2020-30i",
"acct-2020-30i", "acct-2020-30i", "acct-2020-30i", "acct-2020-30i",
"acct-2020-30i", "acct-2020-30i", "acct-2020-30i", "acct-2020-30i",
"acct-2020-30i")), row.names = c(NA, 10L), class = "data.frame")
РЕДАКТИРОВАТЬ: Решение найдено
Я чмокаю себя за то, что не помню функцию агрегирования, но этосработало красиво.Мысль, которой я поделюсь для всех в будущем.
new <- aggregate(convonline, by=list(convonline$conversation_id,
convonline$user_id, FUN=min)
final <- new %>%
mutate(created_at = as.Date(created_at)) %>%
arrange(conversation_id, created_at) %>%
group_by(conversation_id) %>%
mutate(diff = created_at - lag(created_at))