如何基于多列的值减去/匹配某些行?
到目前为止,我已经尝试使用%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
答案 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