R-根据多列查找行的匹配项

时间:2019-05-21 16:36:23

标签: r dataframe subset

如何基于多列的值减去/匹配某些行?

到目前为止,我已经尝试使用%in%运算符。但是,这行不通,只能给我列的逻辑值。这是一个示例:

> A
   x  y  z
1  1  1  A
2  2  1  B
3  3  2  C
4  4  3  D
5  4  3  E
6  5  4  F
7  5  4  G
8  6  5  H

> B
   x  y 
1  1  1
2  4  3
> A[c(1,2)] %in% B
FALSE FALSE 

但是我需要这样获取每一行的逻辑值:

1  TRUE
2  FALSE
3  FALSE
4  TRUE
5  TRUE
6  FALSE
7  FALSE
8  FALSE

为了获得以下信息:

> A[<some logical value>, ]
1  1  1  A
4  4  3  D
5  4  3  E

2 个答案:

答案 0 :(得分:0)

<some logical value>所需要的是A[,1] %in% B[,1] & A[,2] %in% B[,2]

> A[A[,1] %in% B[,1] & A[,2] %in% B[,2], ]
  x y z
1 1 1 A
4 4 3 D
5 4 3 E

答案 1 :(得分:0)

您可以使用merge

merge(A, B, by = c("x", "y"), all.y = TRUE)
#  x y z
#1 1 1 A
#4 4 3 D
#5 4 3 E