检查一列中的每个字符串是否出现在 R 中另一列中的任何位置

问题描述 投票:0回答:0

我在 R 中使用 2 个数据集。我们称它们为 df_a 和 df_b。 df_a 包含一列,我们称它为“名称”,带有字符串值,包括官方和非官方的。 df_b 还包含一列,也标记为“名称”,带有字符串值,所有这些都是官方的。我想在 df_a 中创建另一列,我们称之为“逻辑”,具有 TRUE 或 FALSE 值,如果 df_a$name 中的字符串值与 df_b$name 中的任何官方字符串值匹配,则为 TRUE,如果字符串值不匹配,则为 FALSE。我不想为所有官方字符串值写出 OR 语句,因为列表太长了。逻辑应该检查精确匹配。

在 R 中执行此操作的代码结构是什么?

对于此示例,df_b$name 包含名称“Official Name Example AAA”到“Official Name Example ZZZ”,太多无法手动输入。以下是代码如何处理前 3 个名称。它正确地将真值放在 df_a 的新“逻辑”列中。我想测试所有 df_b$name 值,而不是手动输入每个值。

df_a$logic <- ifelse(
  df_a$name=="Official Name Example AAA" |
    df_a$name=="Official Name Example AAB" |
    df_a$name=="Official Name Example AAC",
  TRUE, FALSE)

对于这个例子,df_a$name可能包含:“AAA”、“BBB”、“Official Name Example AAA”、“Official Name Example AAC”、“Official Name Example AAD”等。 因此,此代码将在 df_a$logic 中返回以下内容:FALSE、FALSE、TRUE、TRUE、FALSE 等。 “官方名称示例 AAD”无法评估为 TRUE 以及任何其他值,因为该代码仅涵盖前 3 个官方变体。 df_a$logic 的预期结果将是:FALSE、FALSE、TRUE、TRUE、TRUE 等

r filtering logical-operators any
© www.soinside.com 2019 - 2024. All rights reserved.