如何在R语言中匹配两个数据框中的列?


要匹配两个数据框中的一列,可以使用 `match` 函数。例如,如果我们有两个名为 `df1` 和 `df2` 的数据框,每个数据框都有一列相似,第二个数据框还有一列额外的列,那么可以对相似的列进行匹配,并基于该匹配和第二个数据框的第二列在第一个数据框中创建一个新列。查看下面的示例以了解其工作原理。

示例1

在线演示

> df1<-data.frame(x1=sample(0:2,20,replace=TRUE))
> df1

输出

   x1
1   2
2   2
3   1
4   0
5   2
6   2
7   2
8   2
9   2
10  1
11  1
12  2
13  1
14  0
15  2
16  2
17  2
18  2
19  2
20  2

示例

> df2<-data.frame(x1=rpois(20,2),x2=rpois(20,5))
> df2

输出

   x1 x2
1   2  5
2   2  5
3   3  6
4   0  5
5   1  3
6   1  5
7   2  6
8   1  3
9   4  6
10  0  5
11  1  0
12  3  4
13  1  3
14  1  4
15  2  6
16  1  5
17  2  2
18  3  8
19  0  5
20  1  6

示例

> df1$x2<-df2$x2[match(df1$x1,df2$x1)]
> df1

输出

   x1 x2
1   2  5
2   2  5
3   1  3
4   0  5
5   2  5
6   2  5
7   2  5
8   2  5
9   2  5
10  1  3
11  1  3
12  2  5
13  1  3
14  0  5
15  2  5
16  2  5
17  2  5
18  2  5
19  2  5
20  2  5

示例2

在线演示

> y1<-sample(c("A","B","C"),20,replace=TRUE)
> df3<-data.frame(y1)
> df3

输出

   y1
1   A
2   C
3   C
4   A
5   C
6   B
7   C
8   B
9   B
10  C
11  B
12  C
13  B
14  A
15  A
16  C
17  B
18  B
19  A
20  A

示例

> y1<-sample(c("A","B","C","D","E"),20,replace=TRUE)
> y2<-sample(LETTERS[1:4],20,replace=TRUE)
> df4<-data.frame(y1,y2)
> df4

输出

   y1 y2
1   E  C
2   A  D
3   C  B
4   C  D
5   D  B
6   B  D
7   D  C
8   C  B
9   D  D
10  C  A
11  B  D
12  B  C
13  C  B
14  B  D
15  D  C
16  B  B
17  E  C
18  D  B
19  A  D
20  B  C

示例

> df3$y2<-df4$y2[match(df3$y1,df4$y1)]
> df3

输出

   y1 y2
1   A  D
2   C  B
3   C  B
4   A  D
5   C  B
6   B  D
7   C  B
8   B  D
9   B  D
10  C  B
11  B  D
12  C  B
13  B  D
14  A  D
15  A  D
16  C  B
17  B  D
18  B  D
19  A  D
20  A  D

更新于:2021年3月5日

3K+ 次浏览

启动您的职业生涯

通过完成课程获得认证

开始学习
广告