从其他具有相同列值的数据帧获取值
问题描述:
如果我有两个数据帧,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中
答
我们可以使用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"