首页 > 解决方案 > 如何合并匹配的数据并仍然在R中显示不匹配的数据

问题描述

我正在尝试合并两个数据框,但并非所有记录都有主键。

DF1 是:

EmpID   SNcode  Name
A1      123     Bill
B2      456     Alice
                Carrie

DF1

在此处输入图像描述

DF2 是:

EmpID   Sncode  Name    Department
A1      123     Bill    Accounts
B2      456     Alice   CustService
        986     Peter   

DF2 在此处输入图像描述

我希望结果是这样的:

EmpID   SNcode  Name    Department
A1      123     Bill    Accounts
B2      456     Alice   CustService
                Carrie  
        986     Peter   

结果 在此处输入图像描述

我下面的代码不起作用:

mydata <- merge(DF1, DF2, by="EmpID",all.y=TRUE)

你能帮我解决这个问题吗?我需要 Carrie 和 Peter 出现在结果中。

标签: rdataframejoindplyrmerge

解决方案


这些是重要的基本代码函数,对于学习和理解 R 中的编码很重要。这里使用了三个不同的函数,它们可以让代码完全按照你想要的方式输出。

首先,要知道这些表的命名顺序与您显示它们的顺序相同。它们在这里被命名为 t1、t2 和 t3。t3 是所需的输出。这些表 t1 和 t2 不会更改并且保持不变。

有四种类型的连接。您可以阅读有关这些连接类型的信息,然后尝试使用它们进行练习。这里我使用了这个full_join()功能。这将通过它们的列名连接来自两个对象( t2 和 t1 )的值。所有值都连接在一起,没有任何东西被删除或留下。连接后,表 t1 和 t2 保持不变。

然后该函数na.omit()用于从连接数据中删除 NA。na.omit()如果在运行函数之前打印 t3,您可以看到这些 NA 。

然后该函数rownames()用于从连接数据中删除行号。t3 中的数据现在已清理并与您所需的输出格式匹配。

代码和输出如下:

t3 <- full_join(t2, t1)   # join 
t3 <- na.omit(t3)           # remove the NA's
rownames(t3) = NULL       # remove the column row numbers
t3                         # print the output

在此处输入图像描述


推荐阅读