我有两个具有相同列名(C)的数据框(A,B),但在该列中可以有不同的唯一值。我想检查数据框(A)中数据框(A)中的列(C)中的“值”是否存在。
A = data.frame(C=c(1,2,3,4))
B = data.frame(C=c(1,3,4,7))
在上面的例子中,我想检查B中是否存在'2' 是否有任何一个没有循环的衬垫,因为我有相当大的文件,并且必须在每一行检查这个。
答案 0 :(得分:67)
使用%in%
如下
A$C %in% B$C
这将告诉您A列C的哪些值在B中。
返回的是逻辑向量。在您的示例的特定情况下,您将获得:
A$C %in% B$C
# [1] TRUE FALSE TRUE TRUE
您可以将其用作A
行的索引或A$C
的索引来获取实际值:
# as a row index
A[A$C %in% B$C, ] # note the comma to indicate we are indexing rows
# as an index to A$C
A$C[A$C %in% B$C]
[1] 1 3 4 # returns all values of A$C that are in B$C
我们也可以否定它:
A$C[!A$C %in% B$C]
[1] 2 # returns all values of A$C that are NOT in B$C
2 %in% B$C # "is the value 2 in B$C ?"
# FALSE
A$C[2] %in% B$C # "is the 2nd element of A$C in B$C ?"
# FALSE