R 如何比较具有不同行数的两个TIBLE之间的多个观测值

R 如何比较具有不同行数的两个TIBLE之间的多个观测值,r,dplyr,R,Dplyr,我有两个tibles dplyr 0.7.4和R 3.4.1,我需要执行以下操作 对于A中的每个变量b,我需要检查b是否等于tibble c中的任何变量c,如果是,则分配变量d,如果不是分配NA 第一个匹配可以,如果有多个匹配,可以使用第一个匹配 两个TIBLE A和C的行数不同 我想使用一种方法,允许与通用函数进行自定义比较。 我更愿意在dplyr中这样做,但任何方法都可以。 Tibble A: b var1_b var2_b ... Tibble C c,d var1_c, var1_d

我有两个tibles dplyr 0.7.4和R 3.4.1,我需要执行以下操作

对于A中的每个变量b,我需要检查b是否等于tibble c中的任何变量c,如果是,则分配变量d,如果不是分配NA

第一个匹配可以,如果有多个匹配,可以使用第一个匹配 两个TIBLE A和C的行数不同 我想使用一种方法,允许与通用函数进行自定义比较。 我更愿意在dplyr中这样做,但任何方法都可以。 Tibble A:

b
var1_b
var2_b
...
Tibble C

c,d
var1_c, var1_d
var2_c, var2_d
...
这应该行得通

set.seed(1)
A <- data.frame(b = sample(1:40, 20, replace=TRUE))
C <- data.frame(c = sample(1:20, 40, replace=TRUE), d = 1:40)

myfun <- function(A, B) {
    sapply(A$b, function(i) B$d[match(i, B$c)])
}

A %>%
  mutate(new = myfun(A,C))

    # b new
# 1  11  25
# 2  15  19
# 3  23  NA
# 4  37  NA
# 5   9  20

请在问题中包含您输入数据的预期输出请求帮助时,您应该包含一个简单的示例输入和预期输出,可用于测试和验证可能的解决方案。