我希望在列'日期'上找到最接近的匹配项。使用包data.table和参数roll =' nearest'。我首先匹配另一列(字母):
> result
date.B letters.B value.B dates.merge letters.merge dates.A letters.A value.A
1: 2008-01-01 A 0.2016819 2008-01-01 A 2008-01-01 A 0.2655087
2: 2008-01-02 B 0.8983897 2008-01-04 B 2008-01-04 B 0.3721239
3: 2008-01-03 C 0.9446753 2008-01-07 C 2008-01-07 C 0.5728534
4: 2008-01-04 D 0.6607978 2008-01-10 D 2008-01-10 D 0.9082078
5: 2008-01-05 A 0.2016819 2008-01-13 A 2008-01-13 A 0.2655087
6: 2008-01-02 B 0.8983897 2008-01-16 B 2008-01-16 B 0.3721239
7: 2008-01-03 C 0.9446753 2008-01-19 C 2008-01-19 C 0.5728534
8: 2008-01-04 D 0.6607978 2008-01-22 D 2008-01-22 D 0.9082078
9: 2008-01-05 A 0.2016819 2008-01-25 A 2008-01-25 A 0.2655087
10: 2008-01-02 B 0.8983897 2008-01-28 B 2008-01-28 B 0.3721239
11: 2008-01-03 C 0.9446753 2008-01-31 C 2008-01-31 C 0.5728534
> A
dates.A letters.A value.A dates.merge letters.merge
1: 2008-01-01 A 0.2655087 2008-01-01 A
2: 2008-01-04 B 0.3721239 2008-01-04 B
3: 2008-01-07 C 0.5728534 2008-01-07 C
4: 2008-01-10 D 0.9082078 2008-01-10 D
5: 2008-01-13 A 0.2655087 2008-01-13 A
6: 2008-01-16 B 0.3721239 2008-01-16 B
7: 2008-01-19 C 0.5728534 2008-01-19 C
8: 2008-01-22 D 0.9082078 2008-01-22 D
9: 2008-01-25 A 0.2655087 2008-01-25 A
10: 2008-01-28 B 0.3721239 2008-01-28 B
11: 2008-01-31 C 0.5728534 2008-01-31 C
> B
date.B letters.B value.B dates.merge letters.merge
1: 2008-01-01 A 0.2016819 2008-01-01 A
2: 2008-01-02 B 0.8983897 2008-01-02 B
3: 2008-01-03 C 0.9446753 2008-01-03 C
4: 2008-01-04 D 0.6607978 2008-01-04 D
5: 2008-01-05 A 0.2016819 2008-01-05 A
结果,A和B的输出如下:
{{1}}
但是,请注意日期最近的匹配日期.A' 2008-01-07'应该是' 2008-01-05' (参见B)而不是' 2008-01-03'。对于以下所有日期,情况也是如此' 2008-01-07'在date.A的结果。
我在这里做错了什么?