如何在 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_join
和 by
来按多列连接。您可以使用以下代码:
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
我想合并两个不同长度和两个条件的数据帧。特别是,我想根据年份和国家/地区(从)将 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_join
和 by
来按多列连接。您可以使用以下代码:
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