查找在2个数据帧之间匹配的行,以及它们在R中的索引

时间:2015-07-10 23:58:26

标签: r indexing matching

我有2个数据帧。首先(我知道如何做)我想找到2个数据帧之间的哪些行(整行)匹配。所以我可以在A中创建一个列,它告诉我整行是否在B中。但是,我不知道该怎么做的部分是找到B中的哪个索引。

TL DR;我需要在A中创建一个新列,它告诉我FALSE是否整行不在B中,或者给我一个该行在B中的位置的索引。

a = as.data.frame(matrix(data = 1:10,nrow=5))
b = as.data.frame(matrix(data = c(1:5,10,7,6,9,8), nrow=5))

set.seed(02138)
b = b[sample(nrow(b)),]
rownames(b) = 1:nrow(b)
a_ = do.call("paste", a[,1:2])
b_ = do.call("paste", b[,1:2])

# Gets me TRUE/FALSE of whether there is a complete row-wise match
a$InB = a_ %in% b_

# Gets me which rows they are in b
b[b_ %in% a_,]

# Now is where I need help combining this
# Expected output

> a$InB = temp
> a
  V1 V2   InB
1  1  6 FALSE
2  2  7     3
3  3  8 FALSE
4  4  9     5
5  5 10 FALSE

1 个答案:

答案 0 :(得分:4)

您可以添加:

a$InB[a$InB] <- as.character(which(b_ %in% a_))
a
#  V1 V2   InB
#1  1  6 FALSE
#2  2  7     3
#3  3  8 FALSE
#4  4  9     5
#5  5 10 FALSE