如果两个列之间的值匹配,则创建一个新列?

时间:2019-09-05 18:01:38

标签: r

我有两个数据框,我想知道如何在数据框“ a”中创建一个新列,以指示何时与b匹配?

数据:

a <- c("123","123","321","321", "213")
a <- data.frame(a)

b <- c("123", "213")
b <- data.frame(b)

结果:

      Match
123    Yes
123    Yes
321    No
321    No
213    Yes

1 个答案:

答案 0 :(得分:0)

一个选择%in%是基于'b'中的元素在'a'中创建逻辑向量,然后将其更改为数字索引(+ 1),使用该索引来更改值改为“否”,“是”

data.frame(Match = c("No", "Yes")[(a$a %in% b$b) +1])
#  Match
#1   Yes
#2   Yes
#3    No
#4    No
#5   Yes

data.frame不允许重复的行名,因此,如果我们需要'a'中的原始列,请改为将其创建为列。行名的

cbind(a, Match = c("No", "Yes")[(a$a %in% b$b) +1])