如何使用多个数据框根据多个条件过滤数据框

时间:2020-02-26 06:52:58

标签: r filter

我有一个通话数据-称之为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_callto_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

我该如何过滤数据以获得我想要的东西?非常感谢。

1 个答案:

答案 0 :(得分:0)

未接来电是客户拨打您的电话号码,对吗?如果是这样,我会这样做:

python3 -m test_utils.py
相关问题