【发布时间】:2012-12-08 05:21:04
【问题描述】:
我有两个数据框(A 和 B),都有一个“C”列。我想检查数据框 A 中“C”列中的值是否存在于数据框 B 中。
A = data.frame(C = c(1,2,3,4))
B = data.frame(C = c(1,3,4,7))
【问题讨论】:
-
setdiff可能感兴趣
我有两个数据框(A 和 B),都有一个“C”列。我想检查数据框 A 中“C”列中的值是否存在于数据框 B 中。
A = data.frame(C = c(1,2,3,4))
B = data.frame(C = c(1,3,4,7))
【问题讨论】:
setdiff 可能感兴趣
如下使用%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
【讨论】:
A$C[2] 是2,因此缺乏清晰度。我在示例中编辑了 cmets 以希望澄清。
str_detect结合吗?