gpt4 book ai didi

r - 与 data.table 执行半连接

转载 作者:行者123 更新时间:2023-12-03 07:50:13 24 4
gpt4 key购买 nike

我如何执行 semi-join与数据表?半连接类似于内部连接,只是它只返回 X 的列(不返回 Y 的列),并且不重复 X 的行以匹配 Y 的行。例如,以下代码执行内部连接加入:

x <- data.table(x = 1:2, y = c("a", "b"))
setkey(x, x)
y <- data.table(x = c(1, 1), z = 10:11)

x[y]
# x y z
# 1: 1 a 10
# 2: 1 a 11

半连接只会返回 x[1]

最佳答案

更多可能性:

w = unique(x[y,which=TRUE])  # the row numbers in x which have a match from y
x[w]

如果 x 中有重复的键值,则需要:
w = unique(x[y,which=TRUE,allow.cartesian=TRUE])
x[w]

或者,反过来:
setkey(y,x)
w = !is.na(y[x,which=TRUE,mult="first"])
x[w]

如果 nrow(x) << nrow(y) 那么 y[x] 方法应该更快。
如果 nrow(x) >> nrow(y) 那么 x[y] 方法应该更快。

但是反反加入也很有吸引力:-)

关于r - 与 data.table 执行半连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18969420/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com