2016-07-14 156 views
-2

如果我有两个数据帧,data1是一个关键字,data2是一个非常长的数据集。从其他具有相同列值的数据帧获取值

数据1

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

和 数据2

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

我想获得一个公式来查找使用DATA1得到下面的结果数据2中的联系信息。

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中

回答

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" 
相关问题