【发布时间】:2020-09-20 02:25:13
【问题描述】:
假设我有 df1:
Start_Date End_Date Value
2001-01-01 2001-12-31 1
2002-01-01 2002-12-31 2
2003-01-01 2003-12-31 3
2004-01-01 2004-12-31 4
2005-01-01 2005-12-31 5
&df2:
DateTime Gain People
2003-01-01 3 3
2003-05-09 5 4
2004-12-31 1 2
2005-01-31 -2 2
2005-08-13 9 7
2006-09-10 6 8
2007-10-03 7 5
我想做的是通过检查 df2 中的哪个 DateTime 位于 df1 中的 Start_Date 和 End_Date 之间,将值从 df1 导入 df2。如果日期不属于 df1 中的任何时期,则返回值 0。期望结果的视图:
DateTime Gain People Value
2003-01-01 3 3 3
2003-05-09 5 4 3
2004-12-31 1 2 4
2005-01-31 -2 2 5
2005-08-13 9 7 5
2006-09-10 6 8 0
2007-10-03 7 5 0
请指教
【问题讨论】:
-
使用data.table:
library(data.table) ; setDT(df2)[setDT(df), Value := i.Value, on = .(DateTime >= Start_Date, DateTime <= End_Date)]
标签: r dataframe datetime dplyr subset