滚动连接多个匹配

时间:2017-04-21 10:48:21

标签: r join data.table

嘿我不确定我是否完全理解滚动连接解决方​​案,特别是当涉及到表中的重复条目时。

以下是示例数据:

new <- data.table( date = as.POSIXct( c( "2016-03-01 12:20:00", "2016-03-01 12:20:00", "2016-04-02 12:20:00" ) ), data.new = c( "sample1","sample2","sample3" ) )
new
old <- data.table( date = as.POSIXct( c( "2016-03-02 12:20:00", "2016-03-07 12:20:00", "2016-04-02 12:20:00", "2015-03-02 12:20:00" ) ), data.old = c( "a","b","c","d" ) )
old
setkey( new, date )
setkey( old, date )
new[old,roll=-Inf]

输出如下:

                       date data.new data.old
1: 2015-03-02 12:20:00  sample1        d
2: 2016-03-02 12:20:00  sample3        a
3: 2016-03-07 12:20:00  sample3        b
4: 2016-04-02 12:20:00  sample3        c

除了data.old'd'的情况之外,我正在使匹配正常工作。 由于表new有两个相似的前两个时间戳,roll可以映射到第一个出现,理想情况下我想要data.old“d”的复制行,data.new列为“sample2”

                      date data.new data.old
  new: 2015-03-02 12:20:00  sample2        d
    1: 2015-03-02 12:20:00  sample1        d
    2: 2016-03-02 12:20:00  sample3        a
    3: 2016-03-07 12:20:00  sample3        b
    4: 2016-04-02 12:20:00  sample3        c

感谢任何指导。

1 个答案:

答案 0 :(得分:1)

使用:

if (CLK'event and CLK = '1') then
    a_store <= a_store(0) & a;
    a_out <= a_store(1);
end if;

给出:

on <- old[new, roll = Inf, .(x.date, data.new, data.old)]
no <- new[old, roll = -Inf]

unique(rbindlist(list(on, no)))