从具有相同列值的其他数据框获取值

时间:2016-07-14 17:53:47

标签: r

如果我有两个数据帧,data1是一个键,data2是一个非常长的数据集。

DATA1

type    type2    contact
a       1        alex
a       2        jim
a       3        alex
b       1        john
b       2        bart
b       3        jim

和 DATA2

type    type2    
a       1        
a       1        
a       1        
a       2        
a       3       
a       3      
b       1        
b       2       
b       2       
b       3       

我想获得一个公式,使用data1查找data2上的联系信息,以获得下面的结果。

type    type2    contact
a       1        alex 
a       1        alex
a       1        alex
a       2        jim
a       3        alex
a       3        alex
b       1        john
b       2        bart 
b       2        bart
b       3        jim

我尝试了以下几点:

data2$contact <- data1$contact[data1$type == data2$type & data1$type2 == data2$type2]

然而,这不起作用,我不确定采用R

的正确方法

1 个答案:

答案 0 :(得分:0)

我们可以使用left_join

library(dplyr)
left_join(data1, data2)
#   type type2 contact
#1     a     1    alex
#2     a     1    alex
#3     a     1    alex
#4     a     2     jim
#5     a     3    alex
#6     a     3    alex
#7     b     1    john
#8     b     2    bart
#9     b     2    bart
#10    b     3     jim

base R选项为match

data1$contact[match(do.call(paste0, data2), do.call(paste0, data1[-3]))]
#[1] "alex" "alex" "alex" "jim"  "alex" "alex" "john" "bart" "bart" "jim"