通过代码合并两个数据表,但识别首先扫描的位置

Merging two data tables by code but recognize where it was scanned first

我正在处理一些包含拒绝和接受数据的数据。这些在两个单独的日志文件中分开。我想将它们与 R 代码合并。

但是,如果代码被拒绝,它 以后可以 被接受。反之亦然。如果您已经使用了该代码,稍后应该会被拒绝。

我想在这两个 table 之间进行合并,因为当您的代码被拒绝时,我也会得到一个代码,为什么当有人在错误的日期使用该代码时,它首先被拒绝或者在错误的商店并稍后在正确的时间和地点使用它我可以在接受的日志文件中找到它。

我的代码如下所示:

head(ACCEPTED)
                                   
code   Overruled device      date
1 29    FALSE   05       2017-02-23 16:27:56
2 30    FALSE   05       2017-02-23 16:27:58
3 09    FALSE   05       2017-02-23 16:28:31
4 06    FALSE   08       2017-02-23 16:28:34
5 27    FALSE   08       2017-02-23 16:28:39
6 07    FALSE   08       2017-02-23 16:28:59

head(REJECTED)
code   CODE device         date
1 29    1   01        2017-02-22 12:47:49
2 07    5   01        2017-02-23 16:48:25
3 00    2   01        2017-02-23 12:50:00
4 09    3   01        2017-02-23 16:51:23
5 87    1   07        2017-02-23 16:25:29
6 98    1   03        2017-02-23 16:25:47

我已经通过条形码合并了它们,但后来我没有包括我想知道代码首次使用的来源这一事实。

一些代码不在两个 table 中,因为它要么被接受,要么被拒绝并且不再使用。

我想要一个可以与 Microsoft power BI 的和弦可视化工具一起使用的 table

新的数据框应该是这样的:

 code   from   to
 29     01     05 # because the code was first seen at 01 and then scanned at 05
 09     05     01 
 07     08     01 

如果代码在其他 table 中不存在,则不应出现在新的 table 中。正常合并按代码进行,但应按代码出现的顺序进行。 任何帮助将不胜感激。

您可以通过 Power Query 连接表:

  • 编辑查询

  • 右击 Queries -> New Query -> Combine -> Megre Queries as New

  • select 两个表,然后是每个表下的 code 列。

  • 指定Join Kind.

  • 展开NewColumn


加入两个表后:

code   Overruled device.ac   date.ac          CODE.rej  device.rej     date.rej
29      FALSE       05    2017-02-23 16:27:56   1          01   2017-02-22 12:47:49
09      FALSE       05    2017-02-23 16:28:31   3          01   2017-02-23 16:51:23
07      FALSE       08    2017-02-23 16:28:59   5          01   2017-02-23 16:48:25

然后您可以添加计算列:

from = IF(new[date.ac]<new[date.rej],new[device.ac],new[device.rej])
to = IF(new[date.ac]>new[date.rej],new[device.ac],new[device.rej])

结果:

code from to
7    8    1
9    5    1
29   1    5