如何在 R 中合并两个具有不同长度和两个条件的数据帧?

How can I merge two data frames with different length and with two conditions in R?

我想合并两个不同长度和两个条件的数据帧。特别是,我想根据年份和国家/地区(从)将 df1 的分数添加到 df2。逻辑类似于Excel中的函数VLOOKUP,有两个条件。我怎样才能用最少的代码实现这一目标?

df1 <- read.table(text = "
                  Year Country   Score  
                  1    NE         0.8     
                  1    UK         0.9     
                  2    NE         0.7     
                  2    UK         1     
                  ",header = T)

df2 <- read.table(text = "
                  Year From     Vote   To 
                  1    NE         1    Ger 
                  1    NE         2    I
                  1    UK         2    Ger
                  1    UK         3    I  
                  2    NE         2    Ger  
                  2    NE         2    I  
                  2    UK         4    Ger  
                  2    UK         2    I  
                  ",header = T)

您可以使用 left_joinby 来按多列连接。您可以使用以下代码:

library(dplyr)
df3 <- left_join(df2, df1, by = c("From" = "Country", "Year" = "Year"))

输出:

  Year From Vote  To Score
1    1   NE    1 Ger   0.8
2    1   NE    2   I   0.8
3    1   UK    2 Ger   0.9
4    1   UK    3   I   0.9
5    2   NE    2 Ger   0.7
6    2   NE    2   I   0.7
7    2   UK    4 Ger   1.0
8    2   UK    2   I   1.0