首页 > 解决方案 > 为什么在合并两个数据框时出现此错误?

问题描述

我正在尝试按名为“团队”的列名合并两个数据框。

我的合并声明-

merge(RB,LB,by.x ="team")

我得到的错误是 -

merge.data.frame(RB, LB, by.x = "team") 中的错误:'by.x' 和 'by.y' 指定不同的列数。

#Create a data frame to store set of Right-Backs
      RB=data.frame(
       team=c("Liverpool",
     "Manchester United",
     "Chelsea","Atletico Madrid",
     "Juventus",
     "Real Madrid"),
     players=c("Trent-Alexandre Arnold",
        "Diogo Dalot",
        "Cesar Azpilicueta",
        "Keiran Trippier",
        "Danilo","Carvajal")
      ,stringsAsFactors = FALSE)

   #Create a data frame to store set of Left-Backs
    LB=data.frame(
    team=c("Manchester United",
     "Real Madrid",
     "Liverpool",
     "Chelsea",
     "Juventus",
     "Atletico Madrid"
     ),
     players=c("Luke Shaw","Marcelo","Andrew Robertson","Marcos Alonso","Alex Sandro", "Renan Lodi" ),
    stringsAsFactors = FALSE
     )

标签: rdataframemerge

解决方案


您必须同时提供by.xand by.y,或者只使用by

df <- merge(RB,LB, by.x="team", by.y="team")
df <- merge(RB,LB, by="team")

从参考:

默认情况下,数据框会合并到它们都具有名称的列上,但可以通过 by.x 和 by.y 给出单独的列规范。

如果不使用,则默认使用等于by.y的输入。因为只有一列和- 两列(即它们具有不同的长度),所以函数终止。byintersect(names(x), names(y))by.xby.y


推荐阅读