其他列中是否存在单词?
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
我想查找第 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