【问题标题】:Fill data frame with data from another data frame where columns do not match [closed]用列不匹配的另一个数据框中的数据填充数据框[关闭]
【发布时间】:2022-01-21 06:05:47
【问题描述】:

我正在为看似简单的任务而苦苦挣扎。我有一个空白数据框,其列如“A”所示。我有一个数据框,其列如 B 所示。B 的列比 A 少。我需要将两者合并,因此文件 A 包含 B 中的所有数据。但是,文件 A 的列顺序不能改变。如果 B 中没有匹配的列,则 A 中的列必须保留但为空。我已经尝试了很多方法,但都做得很短。列名也需要映射在一起。比如B的“Cust No”需要去A的“ID”,B的“客户名”必须去A的“姓名”。我可以直接改B的名字,然后合并两个文件,然后使用 Index 重新排列 A 中的列名,但这不起作用并且很麻烦。有什么建议吗?

【问题讨论】:

  • 请在reproducible exampleminimal reproducible example 中输入示例输入和您的预期输出。这是创建、测试和验证可能的解决方案所必需的。
  • 第一步肯定是把B中的列名改成匹配A。所以names(B)[1]

标签: r merge


【解决方案1】:

使用tidyverse 中的dplyr,您应该能够做到这一点:

library(tidyverse)
AB <-
   B %>%
   rename(ID = `Cust No`, Name = `Customer Name`) %>%
   full_join(A, ., by = "ID")

rename 将允许您手动更改 B 中的名称,以便它们以 new_name = old_name 的形式匹配 Afull_join 将保留两个数据帧中的所有行,并将A 作为第一个参数,B(表示为.)作为第二个参数,将首先将列放在 A 中。 by = 确保您与 ID 列匹配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-10
    • 1970-01-01
    • 2018-12-08
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多