繁体   English   中英

R data.table合并表按多列分组

[英]R data.table merge tables grouping by multiple columns

我有两个巨大的数据表( 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$zxdt$zy

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM