R 检查第二个数据帧中是否存在一个数据帧列中的值

R 检查第二个数据帧中是否存在一个数据帧列中的值,r,dataframe,R,Dataframe,我有两个数据帧(A和B),都有一列“C”。我想检查数据框A中列“C”中的值是否存在于数据框B中 A = data.frame(C = c(1,2,3,4)) B = data.frame(C = c(1,3,4,7)) 在%中使用%,如下所示 A$C %in% B$C 这将告诉您A的C列的哪些值在B中 返回的是一个逻辑向量。在您的示例的特定情况下,您可以得到: A$C %in% B$C # [1] TRUE FALSE TRUE TRUE 您可以将其用作A行的索引或A$C的索引,以获

我有两个数据帧(A和B),都有一列“C”。我想检查数据框A中列“C”中的值是否存在于数据框B中

A = data.frame(C = c(1,2,3,4))
B = data.frame(C = c(1,3,4,7))

在%中使用
%,如下所示

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


如果您想知道特定值是否在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中的第二个值是否在B$C中。是的,绝对是。在原始示例中,
A$C[2]
2
,因此缺乏清晰性。我编辑了我示例中的注释,希望能够澄清;我们如何扩展这种技术来搜索给定变量中的字符串?我们可以结合
str\u detect
吗?
setdiff
可能会引起兴趣