如何使用数据表执行内部滚动连接?

时间:2016-06-30 02:54:04

标签: r data.table

以示例为例

library(data.table)
library(dplyr)
df_test_1 <- 
    data.table(time = c(seq(20, 40, by = 5))) %>%
    mutate(values = -time) %>%
    setkey(time)

df_test_2 <-
    data.table(time = c(15, 20, 26, 28)) %>%
    mutate(orig_time = time) %>%
    setkey(time)

滚动连接df_test_2[df_test_1, roll = -Inf]产生:

   time orig_time values
1:   20        20    -20
2:   25        26    -25
3:   30        NA    -30
4:   35        NA    -35
5:   40        NA    -40

最后三行在NA列中包含orig_time,因为df_test_2中没有时间大于或等于30的记录。

我想制作内心的&#39;上述连接的版本,即不输出没有时间匹配的行,例如:

   time orig_time values
1:   20        20    -20
2:   25        26    -25

1 个答案:

答案 0 :(得分:3)

要复制内部联接,您可以使用nomatch参数。

df_test_2[df_test_1, roll = -Inf, nomatch=0]

另见:

rolling joins data.table in R

R - Data.Table Rolling Joins