R数据.表合并表按多列分组

  • 本文关键字:数据 合并 merge data.table
  • 更新时间 :
  • 英文 :


我有两个巨大的数据表(dt1dt2),除了1列之外几乎完全相同。我想通过p-1列连接表,其中p <- ncol(dt1)。我应该setkey()p-1列,并使用dt1[dt2]加入吗?如果是这种情况,我怎么能在setkey()中输入参数,因为我不能把引号字符串作为参数。

下面是一些模拟数据:

dt1 <- data.table(matrix(rnorm(260), 10, 26))
setnames(dt1, letters)
dt2 <- copy(dt1)
dt2[,z:=rnorm(10)]
## Sections below won't run
setkey(dt1, get(letters[-which(letters=="z")]))
setkey(dt2, get(letters[-which(letters=="z")]))
dt1[dt2]

使用setkeyv:

setkeyv(dt1, letters[-which(letters=="z")])
setkeyv(dt2, letters[-which(letters=="z")])
dt1[dt2]

如果您知道不同列的名称,则可以使用

merge(dt1,dt2,names(dt1)[-grep("z",names(dt1))])

它还保留了两个原始的不同列dt$z.xdt$z.y

最新更新