2016-07-14 118 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" 
相關問題