如何在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
它显示了一个警告,但这并不重要,因为这个警告只是告诉我们两个数据框中因子的级别不同。
广告