【问题标题】:Check whether values in one data frame column exist in a second data frame检查一个数据框列中的值是否存在于第二个数据框中
【发布时间】: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 可能感兴趣

标签: r dataframe


【解决方案1】:

如下使用%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



如果您想知道特定值是否在 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,因此缺乏清晰度。我在示例中编辑了 cmets 以希望澄清。
  • 这个真的很有用;我们如何扩展这种技术来搜索给定变量中的字符串?我们可以和str_detect结合吗?
猜你喜欢
  • 1970-01-01
  • 2022-01-18
  • 2021-12-25
  • 1970-01-01
  • 1970-01-01
  • 2021-09-06
  • 1970-01-01
  • 2021-05-07
  • 1970-01-01
相关资源
最近更新 更多