У меня есть данные вызова - позвоните по номеру total_call
, в котором хранятся все звонки, сделанные на наши телефонные номера и с них. Этот фрейм данных содержит call_id, номер звонящего и номер получателя, дата и время получения.
Имена столбцов перечислены соответственно следующим образом:
# total_call data
call_id | from_number | to_number | retrieved_date
1 1 2 2020-01-12 12:03:34
2 2 1 2020-01-12 12:06:34
3 1 3 2020-01-15 13:02:40
4 2 1 2020-01-15 13:05:40
Второй имеющийся у меня фрейм данных - это missed_call
данные, отфильтрованные по первому. Он имеет те же имена столбцов, что и первый, но в поле to_number
это просто наши номера телефонов. У меня есть способ узнать, какой звонок поступил от наших клиентов и наоборот.
# missed_call data
call_id | from_number | to_number | retrieved_date
1 1 2 2020-01-12 12:03:34
3 1 3 2020-01-15 13:02:40
Теперь мне нужно узнать, был ли перезвонил пропущенный звонок или нет. Мое решение сопоставляет from_number
данных missed_call
с to_number
данных total_call
и ограничивает разницу между этими двумя retrieved_date
максимум 2 часами. Я пытался объединить эти фреймы данных, затем использовал ifelse , но было много повторяющихся наблюдений за телефонными номерами, из-за которых процесс слияния был неверным.
# After merging, i have this (f_num: from_number; t_num: to_number)
f_num|call_id.x|t_num.x|retrieved_date.x |call_id.y|f_num.y|retrieved_date.y
1 1 2 2020-01-12 12:03:34 2 2 2020-01-12 12:06:34
1 1 2 2020-01-12 12:03:34 4 2 2020-01-15 13:05:40
1 3 3 2020-01-15 13:02:40 2 2 2020-01-12 12:06:34
1 3 3 2020-01-15 13:02:40 4 2 2020-01-15 13:05:40
# This is what i need
f_num|call_id.x|t_num.x|retrieved_date.x |call_id.y|f_num.y|retrieved_date.y
1 1 2 2020-01-12 12:03:34 2 2 2020-01-12 12:06:34
1 3 3 2020-01-15 13:02:40 4 2 2020-01-15 13:05:40
Что может я делаю, чтобы отфильтровать данные, чтобы получить то, что я хочу? Большое спасибо.