Excel vlook函数在R中用于数据帧
我有一个数据框的问题,希望在这里找到帮助。初始数据帧(我们称之为df1)包含一个ID号,该ID号可能重复多次,并且可能不符合顺序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
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