嘿我不确定我是否完全理解滚动连接解决方案,特别是当涉及到表中的重复条目时。
以下是示例数据:
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
感谢任何指导。
答案 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)))