如何通过一列多列键连接data.table

时间:2014-03-13 23:01:41

标签: r data.table

假设我有一个带有id列,日期列和值列的data.table。它由id和日期键入。我想只提取某些日期。有没有办法只加入密钥的第二列,忽略第一列?

例如,

values <- data.table(id = rep(1:2, each = 10), dates = rep(1:10, 2), values = rep(c(1,NA,NA, NA), 5))
setkey(values, id, dates)

dates <- data.table(id = c(1,5,8))
setkey(dates, id)

# what i want
x <- values$dates %in% dates$id
values[x]

谢谢!

1 个答案:

答案 0 :(得分:1)

values <- data.table(id = rep(1:2, each = 10),
                     dates = rep(1:10, 2),
                     values = rep(c(1,NA,NA, NA), 5))
setkey(values, id, dates)

dates <- data.table(dates = c(1,5,8))
setkey(dates, dates)

merge(values, dates, by = "dates", nomatch = 0)

要加入的列应该具有相同的名称,因此我更改了&#39; id&#39;在&#39;日期&#39;至于&#39;日期&#39;。