根据 2 列的值将值与数据框匹配

时间:2021-07-09 18:12:59

标签: r dataframe

我在数据框中创建了一个新的空列,我想将来自单独数据框中的值与具有相同个人和年份的行进行匹配。

df1 <- data.frame(names = c("greg", "naomi", "tera", "greg", "dylan", "tera"),
                  year = c(2010, 2010, 2011, 2012, 2013, 2013), status = numeric())

df2 <- data.frame(names = c("greg", "greg", "naomi", "tera", "tera", "dylan"),
year = c(2010, 2011, 2011, 2011, 2013, 2012),
status = c(1,0,2,0,1,3))

我希望 df2$status 中的值与 df1 中相应的年份和个人相匹配,如下所示。

names year status
1  greg 2010      1
2 naomi 2010      2
3  tera 2011      0
4  greg 2012      0
5 dylan 2013      3
6  tera 2013      1

我已经考虑使用 if... else,但我想知道是否有一种方法可以使用 match() 函数或其他类似方法。我正在努力使我的代码尽可能简短。

1 个答案:

答案 0 :(得分:2)

我们可以使用连接

library(data.table)
setDT(df1)[df2, status := i.status, on = .(names, year)]