如果我有两个数据帧,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
的正确方法答案 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"