【发布时间】:2018-04-14 13:37:33
【问题描述】:
我正在尝试在日期列上加入 R 中的两个数据帧(不同时间戳的测量值)。两个帧的日期时间戳不相等,所以我需要以某种方式舍入时间戳才能加入。 我想到了:
首先将值四舍五入到最接近的分钟,然后加入 这种方法的问题是四舍五入会导致近距离测量被四舍五入到不同的分钟,所以它们不能被加入
根据第二帧中最接近的值加入记录(使用“data.table”中的“roll”) 这种方法的问题是每帧可能会丢失测量值,因此上面的第二个解决方案将不起作用(在丢失后的最接近的下一个测量值对于 JOIN 是错误的)。我的问题是如何在以下条件下从两帧中加入两条记录: 如果时间戳之间的差异小于 2 分钟 - 将它们加入 1 条记录 ELSE(一般情况下)- 将所有与 N/A 值不匹配的记录保留在 JOINed 框架的列中
** 由于缺少测量值,两个帧的长度可能不同
温度表
Name Date Value Unit
Temperature 01/04/2017 00:02:08 14.6 degC
Temperature 01/04/2017 00:20:18 15.5 degC
Temperature 01/04/2017 00:38:29 14 degC
Temperature 01/04/2017 00:54:45 14.5 degC
Temperature 01/04/2017 01:14:44 13.9 degC`
湿度表
Name Date Value Unit
Relative Humidity 01/04/2017 00:02:25 56 %
Relative Humidity 01/04/2017 00:20:34 50 %
Relative Humidity 01/04/2017 00:38:44 59 %
Relative Humidity 01/04/2017 01:15:01 58 %`
结果表
Name.x Date Value.x Unit.x name.y value.y unit.y
Temperature 01/04/2017 00:02 14.6 degC Relative Humidity 56 %
Temperature 01/04/2017 00:20 15.5 degC Relative Humidity 50 %
Temperature 01/04/2017 00:38 14 degC Relative Humidity 59 %
Temperature 01/04/2017 00:54 14.5 degC NA NA NA
Temperature 01/04/2017 01:14 13.9 degC Relative Humidity 58 %`
【问题讨论】:
-
您的
Date列中的class是什么?您目前如何四舍五入这些值? -
日期列是
POSIXct type,目前使用的舍入函数是-round_date {lubridate}