【问题标题】:How to join data.table by one column of multi-column key如何通过一列多列键加入data.table
【发布时间】:2014-03-13 23:01:40
【问题描述】:

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

例如,

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]

谢谢!

【问题讨论】:

  • setkey(values, dates); values[dates]?
  • 是的,就是这样 :) 但如果我不需要的话,我会尽量避免重新输入
  • 您不想这样做有什么特别的原因吗?
  • 这应该可以在secondary keys - FR #1007 实施后实现。
  • 表很大,如果没有必要,我宁愿不重新输入。我认为这是一种常见的操作,所以我确信会有更优雅的方式。

标签: r data.table


【解决方案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)

要加入的列应该具有相同的名称,所以我将 'dates' 中的 'id' 更改为 'dates'。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-28
    • 2017-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-11
    • 1970-01-01
    相关资源
    最近更新 更多