[英]R data.table merge tables grouping by multiple columns
我有两个巨大的数据表( dt1
和dt2
),除了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$zx
和dt$zy
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.