在A中查找与B中的行匹配的行号

时间:2016-03-18 06:07:23

标签: r dataframe

我想知道A中与B行匹配的行的索引。

A和B都是数据帧。为简单起见,假设:

a1 <- data.frame(a = 1:5, b=letters[1:5])
a2 <- data.frame(a = 1:3, b=letters[1:3])

在这种情况下,它应该返回1,2,3。

我的完整数据集有500k行和18列。

2 个答案:

答案 0 :(得分:2)

join.keys包中的plyr函数为一对输入数据框中的每个唯一行提供了一个键,这使得确定来自A的哪些行非常简单B。在join.keys返回的列表中,x是第一个数据帧的行标识符的向量,y是第二个数据帧的行标识符的向量。

library(plyr)
with(join.keys(a1, a2), which(x %in% y))
# [1] 1 2 3

答案 1 :(得分:0)

您可以使用此代码:

>subset(a1,a1$a %in% a2$a)

它返回:

>1  a

>2  b

>3  c

如果您只想要列a,可以添加:

>subset(a1,a1$a %in% a2$a,a)

>1

>2

>3

我认为在您的数据上执行它会很快。