用列不匹配的另一个数据框中的数据填充数据框[关闭]
Posted
技术标签:
【中文标题】用列不匹配的另一个数据框中的数据填充数据框[关闭]【英文标题】: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 example 或minimal reproducible example 中输入示例输入和您的预期输出。这是创建、测试和验证可能的解决方案所必需的。 第一步肯定是把B中的列名改成匹配A。所以names(B)[1] 【参考方案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
的形式匹配 A
。 full_join
将保留两个数据帧中的所有行,并将A
作为第一个参数,B
(表示为.
)作为第二个参数,将首先将列放在 A 中。 by =
确保您与 ID
列匹配。
【讨论】:
以上是关于用列不匹配的另一个数据框中的数据填充数据框[关闭]的主要内容,如果未能解决你的问题,请参考以下文章