如何使用数据执行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]

If nrow(x) << nrow(y) then the y[x] approach should be faster.
If nrow(x) >> nrow(y) then the x[y] approach should be faster.

但反对加入的呼声也一样:-)

R相关问答推荐

R kableExtra在插入水平线时添加额外的空白行

高质量地将R格式的图表从Word中输出

通过绘图 Select 线串几何体并为其着色

混淆矩阵,其中每列和等于1

找出疾病消失的受试者

从开始时间和结束时间导出时间

使用R中相同值创建分组观测指标

pickerInput用于显示一条或多条geom_hline,这些线在图中具有不同 colored颜色

将向量组合到一个数据集中,并相应地命名行

在R中使用数据集名称

R根据条件进行累积更改

为什么我的基准测试会随着样本量的增加而出现一些波动?

使用R闪光显示所有数据点作为默认设置

用约翰逊分布进行均值比较

将一个字符串向量调整为与其他字符串向量完全相同的大小

Geom_Hline将不会出现,而它以前出现了

将多个变量组合成宽格式

如何在R中改变fviz_pca_biplot中圆的边界线的 colored颜色 ?

扩展R中包含列表的数据框

如何将图例文本添加到图例符号中