【发布时间】:2021-12-25 23:35:05
【问题描述】:
我必须对包含日期的 dfs(dfA 和 dfB)进行分析,并且我想在 dfA 中的某些列中填充一些基于一些简单操作的 dfB 数据。
假设df A具有以下结构:
Location Mass Date
A 0.18 10/05/2001
B 0.25 15/08/2006
C 0.50 17/12/2019
Df B 包含
Date Event Time
其中 date 的日期范围很广。我想在 dfB 中查找 dfA 中的日期,并根据简单的日期操作从 dfB 检索“事件”和“时间”数据,例如从 dfA 上的“日期”中显示的一、二或三天获取数据,给我类似的东西:
Location Mass Date Event 1 Event 2 Event 3
A 0.18 10/05/2001 (w) (x) (y)
B 0.25 15/08/2006 (z) (z1) (z2)
其中 (w) 将是从 dfA (09/05/2001) 中指定的“日期”开始的“日期”(-1) 天从 dfB 中的“事件”中提取的数据,然后 (x) 将检索数据从 dfB 中的“事件”在“日期”(-2)天从 df A(08/05/2001)等等。
我相信使用 dplyr 和 lubridate 可以解决这个问题。
【问题讨论】:
-
您能否提供一个可重现的最小示例?如果没有,我只能建议您检查 df 中的 Date 列是否具有相同的类和相同的格式。之后,您可以使用 dplyr 的 inner_join 函数来完成这项工作。
-
(1) 正如 Eva 所说,请创建一个 reproducible example 并提供示例输入和您的预期输出。 (2) 这听起来像是一个合并/连接问题,结合了从长到宽的操作。看看How to join (merge) data frames (inner, outer, left, right) 和How to reshape data from long to wide format。