如何在R中使用dplyr根据具有不同水平的因子列和列名连接两个数据框?


当存在具有不同水平的公共因子时,可以连接数据框,但结果将使用dplyr呈现所有级别。我们可以使用left_join函数连接两个数据框,但如果两个数据框大小不同,则第一个数据框的大小必须大于第二个数据框。

示例

考虑以下数据框:

> Class<-c("Statistics","Maths","Chemistry","Physics","Economics","Political Science",
+ "Geography")
> df1<-data.frame(Class)
> df1
Class
1 Statistics
2 Maths
3 Chemistry
4 Physics
5 Economics
6 Political Science
7 Geography
> Subject<-c("Maths","Chemistry","Physics","Economics","Political Science",
+ "Geography")
> Age<-c(18,21,22,25,21,23)
> df2<-data.frame(Subject,Age)
> df2
Subject Age
1 Maths 18
2 Chemistry 21
3 Physics 22
4 Economics 25
5 Political Science 21
6 Geography 23

在这两个数据框中,因子Class和Subject的级别相同,因此我们可以使用它们来连接数据框。

加载dplyr包:

> library(dplyr)

连接两个数据框:

> left_join(df1,df2, by = c("Class" = "Subject"))
Class Age
1 Statistics NA
2 Maths 18
3 Chemistry 21
4 Physics 22
5 Economics 25
6 Political Science 21
7 Geography 23
Warning message:
Column `Class`/`Subject` joining factors with different levels, coercing to character vector

它显示了一个警告,但这并不重要,因为这个警告只是告诉我们两个数据框中因子的级别不同。

更新于:2020年8月10日

474 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告