如何将数据框中的列与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