其他列中是否存在单词?

Does word exist in other column?

我想查找第 4 列中是否存在第 1、2 或 3 列中的任何单词 - 如果存在 return 1 如果不存在 return 0。例如,我们将有 l5 V1 中的 l6,V2 中的 l5 和 V3 中的 l8 l45。 V4 是 l6 和 l56 所以新列 V5 将 return 1 因为有一个匹配 - 来自 V1 的第二个词是 l6 - 新列将 return 1.

下面的另一个示例 table - 第 6 行将 return 1 放入新列,因为它包含 V4 中的单词 l7,而 V4 中存在于 V3 列中。 - 我想始终将 V4 与其他列的输出进行比较。谢谢。

   id                 V1      V2         V3                 V4
   1                  l7      l7         l7                 l7
   2              l31 l7 l56  l7         l35                l22
   3              l31 l7      l7       l31 l7               l7
   4                 l22      l16        l22                l28
   5                 l31      l31        l32                l31
   6             l18 l48      l18      l7 l22         l28,l36,l7
   7                 l31      l31        l31                l32
   8                 l31      l10        l39             l31,l7
   9              l7 l35      l31      l7 l35               l31
   10                l36      l36      l36 l7               l36

我们可以使用 strsplit 拆分列,使用 Map 连接元素,然后与第 5 列进行比较

as.integer(mapply(function(x, y) any(x %in% y), 
               strsplit(df1[,5], '[, ]'), 
    do.call(Map, c(f = c, lapply(df1[2:4], function(x) strsplit(x, "[, ]"))))))
#[1] 1 0 1 0 1 1 0 1 1 1

或更紧凑地,paste 将行(第 2 至 4 列)放在一起,然后执行 strsplit 和比较

as.integer(sapply(Map(`%in%`, strsplit(df1[,5], '[, ]+'), 
    lapply(strsplit(do.call(paste, df1[2:4]), "[ ,]+"), unique)), any))
#[1] 1 0 1 0 1 1 0 1 1 1