如何比较具有不同行数的两个元组之间的多个观察结果

时间:2018-02-07 19:53:54

标签: r dplyr

我有两个元素(dplyr 0.7.4和R 3.4.1)我需要做以下事情

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

  1. 第一场比赛没问题,如果有多场比赛,可以使用第一场比赛
  2. 两个元素A和C具有不同的行数
  3. 我想使用一种方法,允许与通用函数fun()进行自定义比较。
  4. 我更喜欢在dplyr中执行此操作,但任何方法都可以。
  5. Tibble A:

    b
    var1_b
    var2_b
    ...
    

    Tibble C

    c,d
    var1_c, var1_d
    var2_c, var2_d
    ...
    

1 个答案:

答案 0 :(得分:1)

这应该有效

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