Excel vlook函数在R中用于数据帧

Excel vlook函数在R中用于数据帧,r,R,我有一个数据框的问题,希望在这里找到帮助。初始数据帧(我们称之为df1)包含一个ID号,该ID号可能重复多次,并且可能不符合顺序 >df1 ID 1 5468 2 5468 3 8896 4 8896 我想使用这个ID,在另一个数据框(df2)中查找相应的国家,看起来像: >df2 ID country 1 5468 USA 2 8896 Canada 并在初始数据框中添加国家。请注意,每个ID在第二个数据帧中仅显示一次

我有一个数据框的问题,希望在这里找到帮助。初始数据帧(我们称之为df1)包含一个ID号,该ID号可能重复多次,并且可能不符合顺序

>df1
      ID
1   5468
2   5468
3   8896
4   8896
我想使用这个ID,在另一个数据框(df2)中查找相应的国家,看起来像:

>df2
    ID     country
1   5468   USA
2   8896   Canada
并在初始数据框中添加国家。请注意,每个ID在第二个数据帧中仅显示一次,但在第一个数据帧中可以有多个显示。基本上,我正在寻找类似于Excel“vlookup”函数的东西,只是为了R


我将非常感谢任何帮助

使用
合并

df1 <- data.frame(ID=rep(c(5468,8896), each=2))
df2 <- data.frame(ID=c(5468,8896), country=c("USA","Canada"))

merge(df1, df2)
    ID country
1 5468     USA
2 5468     USA
3 8896  Canada
4 8896  Canada
df1您可以使用
match()

就像第一个是
dataset1$ID[n]
,第二个是
dataset2$ID

然后
dataset2[匹配(dataset1$ID[n],dataset2$ID,2]


但在大多数情况下,James给出的答案要好得多,但如果您真的需要,match更类似于vlookup。

这使用了环境查找等更大的数据集。这可能比任何其他解决方案都快得多:

df1 <- data.frame(ID=rep(c(5468,8896), each=2))
df2 <- data.frame(ID=c(5468,8896), country=c("USA","Canada"))

library(qdap)
df1$country <- lookup(df1[, 1], df2)

## binary operator for lookup
##  df1$country <- df1[, 1] %l% df2  

## > df1
##     ID country
## 1 5468     USA
## 2 5468     USA
## 3 8896  Canada
## 4 8896  Canada
df1