【问题标题】:How do I merge 2 dataframes without a corresponding column to match by?如何合并 2 个没有对应列匹配的数据框?
【发布时间】:2020-12-22 05:27:10
【问题描述】:

我正在尝试在 RStudio 中使用 Merge() 函数。基本上我有两个有 5000 多行的表。它们都有相同数量的行。虽然没有相应的列可以合并。然而,这些行是有序且对应的。例如。 dataframe1 的第一行应与第一行 dataframe2 合并...第二行 dataframe1 应与第二行 dataframe2 合并,依此类推...

以下是它们的外观示例:

Dataframe1(df1):

+-------------------------------------+
|     Name    |   Sales   |  Location |
+-------------------------------------+
|      Rod    |    123    |    USA    |
|     Kelly   |    142    |    CAN    |
|      Sam    |    183    |    USA    |
|     Joyce   |    99     |    NED    |
+-------------------------------------+

Dataframe2(df2):

+---------------------+
|     Sex   |   Age   |
+---------------------+
|      M    |    23   |
|      M    |    33   |
|      M    |    31   |
|      F    |    45   |
+---------------------+

注意:这只是一个缩小的示例。

我尝试在 RStudio 中使用合并功能,这是我所做的:

DFMerged <- merge(df1, df2)

但是,这会增加行数和列数。对于此示例,它返回 16 行和 5 列。 我从这个函数中遗漏了什么,我知道有一个 merge(x,y, by=) 参数,但我无法使用列来匹配它们。

我想要的输出是:

+----------------------------------------------------------+
|     Name    |   Sales   |  Location |    Sex   |   Age   |
+----------------------------------------------------------+
|      Rod    |    123    |    USA    |     M    |    23   |
|     Kelly   |    142    |    CAN    |     M    |    33   |
|      Sam    |    183    |    USA    |     M    |    31   |
|     Joyce   |    99     |    NED    |     F    |    45   |
+-------------------------------------+--------------------+

我正在考虑在每个数据帧中添加额外的列,例如 row# 并以此匹配它们。

【问题讨论】:

  • dplyr::bind_cols(df1, df2) 或只是cbind(df1, df2)。

标签: r dataframe merge


【解决方案1】:

你可以使用:

cbind(df1,df2)

这必然适用于两个数据帧中相同数量的行

【讨论】:

    【解决方案2】:

    你可以使用cbind:

    cbind(df1, df2)
    

    如果你想使用merge,你可以使用:

    merge(df1, df2, by=0)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-12
      • 1970-01-01
      • 2018-10-16
      • 2021-04-07
      • 2021-07-22
      • 2015-10-30
      • 1970-01-01
      • 2020-08-03
      相关资源
      最近更新 更多