使用列不匹配的另一个数据框中的数据填充数据框

Fill data frame with data from another data frame where columns do not match

我正在为看似简单的任务而苦苦挣扎。我有一个空白数据框,其中的列如“A”所示。我有一个数据框,其中的列如 B 所示。B 的列比 A 少。我需要合并这两个文件,因此文件 A 包含 B 中的所有数据。但是,文件 A 的列顺序无法更改。如果 B 中没有匹配的列,则 A 中的列必须保留但为空。我尝试了很多方法,但都不够用。列名也需要映射在一起。例如,B 中的“Cust No”需要转到 A 中的“ID”。B 中的“Customer Name”必须转到 A 中的“Name”。我可以只更改 B 中的名称,然后合并这两个文件,然后使用 Index 重新排列 A 中的列名,但这不起作用并且很麻烦。有什么建议吗?

使用 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.