【发布时间】:2018-02-16 15:01:29
【问题描述】:
我有一个大的日期时间数据集,几乎一年中的每一秒。我正在尝试dplyr::left_join 第二个数据集,该数据集的日期时间列的值在第一个数据集中的时间范围内。当我加入数据集时,只有少量记录加入(大约 45k 中的大约 100 条),我知道大多数记录应该加入。我为确保列相同所做的检查包括:
dput(df_all_dates$date_time[1])
dput(df_subset_dates$date_time[1])
这两者都会产生以下结果:
structure(1485781200, class = c("POSIXct", "POSIXt"), tzone = "")
我还做了以下比较(以下代码中的10 和4701 反映了数据中的相同日期):
as.numeric(df_all_dates$date_time[10]) # produces value 1485785900
as.numeric(df_subset_dates$date_time[4701]) # produces value 1485785900
但是,在连接中,来自 df_subset_dates 的数据不会连接到结果数据集中,即使日期时间值相同。关于日期时间还有其他什么会导致这些不加入吗?有些值确实加入了,但我看不出任何模式来说明为什么这些记录与未加入的记录不同。
如果有帮助,这里是实际连接的代码:
df_all_dates %>%
left_join(df_subset_dates, by = 'date_time')
【问题讨论】:
-
请附上一个可重现的例子
-
我在过去加入日期时遇到过问题...与您在此处描述的不太一样,但我会将它们转换为数字,加入并转换回来。如果没有更详细的示例,就很难诊断。
-
如果 OP 可以制作一个可重现的示例,他们就会知道解决方案!我发现问题和答案很有帮助。将日期更改为数字并没有显示任何直接问题。我在两个日期都使用了 lubridate::seconds() 并发现 jstauss 的答案很有帮助。