【发布时间】:2017-10-17 08:20:12
【问题描述】:
您好,我正在尝试使用组和日期在范围内提取一些 id
> d1
id group Date
1: 1 A 2017-07-02
2: 2 A 2017-07-04
3: 3 A 2017-05-15
4: 4 A 2017-08-02
5: 5 B 2017-12-28
6: 6 B 2015-07-02
7: 7 B 2012-07-02
8: 8 B 2018-07-02
9: 9 C 2017-07-02
10: 10 C 2017-07-02
11: 11 C 2017-07-02
12: 12 C 2017-07-04
13: 13 D 2017-05-15
14: 14 D 2017-08-02
15: 15 D 2017-12-28
16: 16 D 2015-07-02
17: 17 E 2012-07-02
18: 18 E 2018-07-02
19: 19 E 2017-07-02
20: 20 E 2017-07-02
> d2
group timestamp1 timestamp2
1: A 2015-07-01 2017-07-20
2: A 2020-07-12 2017-07-15
3: B 2017-05-15 2020-05-22
我想要 d1 中的 id 匹配 d2 日期范围和组
group timestamp1 timestamp2 id
1: A 2017-07-02 2017-07-02 1
2: A 2017-07-04 2017-07-04 2
3: A 2017-05-15 2017-05-15 3
4: B 2017-12-28 2017-12-28 5
5: B 2018-07-02 2018-07-02 8
我检查了这个How to perform join over date ranges using data.table? 我认为这是解决方案,但我无法让它发挥作用。
日期、时间戳、时间戳2在POSIXct
请帮忙:)
【问题讨论】:
-
除了
id== 6,d1中的所有值似乎都在d2中的值范围内,因此,您想要的输出不是很清楚。 -
我想要
group == group & Date >=timestamp1 & Date <=timestamp1这样的东西,希望它更好 -
我了解您想要什么,您可以通过执行类似
d2[d1, on = .(group, timestamp1 <= Date, timestamp2 >= Date), nomatch = 0L, mult = "first"]的操作来实现这一点(假设您有正确的Date类),但您想要的输出没有意义 -
sry 我只是未能在我的示例中制定一个好的日期范围,它正在工作 thx
-
那么你没有任何匹配项。日期范围不重叠或列类不属于
Date类。尝试制作一个适当的可重现示例。
标签: r date join data.table