检查一列中的值是否存在于另一列的列表中

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

我是 R 新手(3 个月)。在数据框中,我想研究列中的值是否存在于第二列中。然而,第二列有一个重复的向量,如下所示:

插入 df:

library(tidyverse)

numbers.col <- c(1,2,3)

letters.col <- c("a", "b", "c")

search.for <- list("a","b")

df <- data.frame(numbers.col, letters.col)

df$search.for <- list(search.for)

df

这会导致:

  numbers.col letters.col search.for
1           1           a       a, b
2           2           b       a, b
3           3           c       a, b

正在尝试寻找。如果它有效,我将在第 1 行和第 2 行中显示“Ok”,在第 3 行中显示“Nok”(结果列)

mutate(df, result = if_else(df$letters.col %in% df$search.for, "Ok", "Nok"))

  numbers.col letters.col search.for result
1           1           a       a, b    Nok
2           2           b       a, b    Nok
3           3           c       a, b    Nok

有办法让它发挥作用吗?

r search vector nested vlookup
1个回答
0
投票

你可以试试

> transform(df, result = c("Nok", "Ok")[1 + mapply(`%in%`, letters.col, search.for)])
  numbers.col letters.col search.for result
1           1           a       a, b     Ok
2           2           b       a, b     Ok
3           3           c       a, b    Nok
© www.soinside.com 2019 - 2024. All rights reserved.