【发布时间】:2019-06-26 18:14:29
【问题描述】:
我有两个数据帧,第一个跨越 3 个月,每 2.5 分钟记录一次深度。
shark depth temperature datetime date location
A 49.5 26.2 20/03/2018 08:00 20/03/2018 SS04
A 49.5 25.3 20/03/2018 08:02 20/03/2018 SS04
A 53.0 24.2 20/03/2018 08:04 20/03/2018 SS04
A 39.5 26.5 20/03/2018 08:32 20/03/2018 Absent
A 43.0 26.2 21/03/2018 09:10 21/03/2018 Absent
A 44.5 26.5 21/03/2018 10:18 21/03/2018 SS04
我有第二个数据框,列出了这三个月的潮汐状态。
date time depth tide_state datetime
18/03/2018 02:33 2.09 High 20/03/2018 02:33
18/03/2018 08:39 0.45 Low 20/03/2018 08:39
18/03/2018 14:47 2.14 High 20/03/2018 14:47
18/03/2018 20:54 0.41 Low 20/03/2018 20:54
19/03/2018 03:01 2.13 High 21/03/2019 03:01
19/03/2018 09:09 0.41 Low 21/03/2019 09:09
我想创建一个新数据集,根据每个数据集的日期时间列,为第一个数据集上的所有值插入潮汐状态。例如,如果退潮在 08:39,涨潮在 14:47,我希望 df1 中大于 08:39 但小于 14:47 的每个值都记录为“低潮”,之后的值但是在下一个低潮“高”之前。
由于潮汐时间每天变化三到四次,我不太确定如何在 R 中合并这些。我不确定是否有使用数据的简单方法。桌子?
我将每个数据框中的两个日期时间列都设置为 POSIXct 值。
理想情况下,我想生成一个像这样的数据框的表格:
shark depth temperature datetime date location tide_state
A 49.5 26.2 20/03/2018 08:00 20/03/2018 SS04 High
A 49.5 25.3 20/03/2018 08:02 20/03/2018 SS04 High
A 53.0 24.2 20/03/2018 08:04 20/03/2018 SS04 High
A 39.5 26.5 20/03/2018 08:32 20/03/2018 Absent Low
A 43.0 26.2 20/03/2018 09:10 21/03/2018 Absent Low
A 44.5 26.5 20/03/2018 10:18 21/03/2018 SS04 Low
【问题讨论】:
-
这有时被称为“非等值连接”,可以使用 SQL、data.table 或模糊连接包。 dplyr rangling 也可以,但我认为它不会那么优雅。
-
两个数据集有多大?我正在考虑一种方法,但它可能有大小限制。
-
@akash87 第一个数据集有102902个观测值,潮汐数据集有386个