根据多个列的条件连接两个表

时间:2017-12-18 23:12:18

标签: r join merge

我正在处理来自野生动物的GPS项圈数据。 GPS项圈由序列号标识。在几年的过程中,单个GPS项圈可用于多个动物。我需要从GPS项圈为每个数据点分配动物ID。动物ID应分配到正确的领号,但仅限于捕获日期当天或之后以及该动物死亡日期(如果适用)之前或之前的位置。

以下是我的数据的示例。

当通过卫星下载GPS项圈数据时,它采用以下格式:

   CollarSerialNumber Latitude Longitude       Date
1               36542 44.95511 -107.5431 2016-02-18
2               36542 44.94927 -107.5855 2016-02-19
3               36542 44.95027 -107.5838 2016-02-20
4               36542 44.96125 -107.5831 2016-02-20
5               36542 44.95949 -107.5854 2016-02-21
6               36542 44.95233 -107.5717 2016-02-21
7               36542 44.95743 -107.5664 2016-02-22
8               36542 44.96124 -107.5840 2016-02-22
9               36542 44.96322 -107.5799 2016-02-22
10              36542 44.95912 -107.5857 2016-02-23
11              36545 44.95263 -107.5207 2016-02-17
12              36545 44.95278 -107.5202 2016-02-17
13              36545 44.95366 -107.5481 2016-02-18
14              36545 44.93453 -107.5940 2016-02-19
15              36545 44.94563 -107.5823 2016-02-19
16              36545 44.95020 -107.5836 2016-02-20

我有一个单独的数据框,其中包含动物的捕获日期(即在动物上部署项圈的日期),动物ID和死亡日期。

  Animal_ID Collar_Serial Capture_Date  Mort_Date
1    16-046         36542   2016-02-18 2016-02-20
2    16-047         36542   2016-02-21         NA
3    16-048         36545   2016-02-17         NA

所以我需要根据Collar Serial#和Capture and Mortality Dates将一个Animal_ID列添加到指示Animal_ID的GPS项圈数据中。我的预期输出如下:

   CollarSerialNumber Latitude Longitude       Date    Animal_ID
1               36542 44.95511 -107.5431 2016-02-18    16-046 
2               36542 44.94927 -107.5855 2016-02-19    16-046 
3               36542 44.95027 -107.5838 2016-02-20    16-046 
4               36542 44.96125 -107.5831 2016-02-20    16-046 
5               36542 44.95949 -107.5854 2016-02-21    16-047
6               36542 44.95233 -107.5717 2016-02-21    16-047
7               36542 44.95743 -107.5664 2016-02-22    16-047
8               36542 44.96124 -107.5840 2016-02-22    16-047
9               36542 44.96322 -107.5799 2016-02-22    16-047
10              36542 44.95912 -107.5857 2016-02-23    16-047
11              36545 44.95263 -107.5207 2016-02-17    16-048
12              36545 44.95278 -107.5202 2016-02-17    16-048
13              36545 44.95366 -107.5481 2016-02-18    16-048
14              36545 44.93453 -107.5940 2016-02-19    16-048
15              36545 44.94563 -107.5823 2016-02-19    16-048
16              36545 44.95020 -107.5836 2016-02-20    16-048

1 个答案:

答案 0 :(得分:0)

我已经为我的问题提出了一个相当笨重的解决方案,但它确实有效。见下文:

{
    "name": "Python: Attach",
    "remoteRoot": "/app/",
    ...
}

如果有人能想出更优雅的解决方案,我很乐意看到它!