如何合并匹配的数据并在R中仍然显示未匹配的数据
我试图合并两个数据帧,但并非所有记录都有主键 DF1是:如何合并匹配的数据并在R中仍然显示未匹配的数据,r,dataframe,join,dplyr,merge,R,Dataframe,Join,Dplyr,Merge,我试图合并两个数据帧,但并非所有记录都有主键 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 Pe
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)
mydata这些是重要的基本代码函数,学习和理解这些函数对于R中的编码非常重要。这里使用了三种不同的函数,可以让代码以您想要的方式准确输出
首先,要知道表的命名顺序与显示的顺序相同。它们在这里被命名为t1、t2和t3。t3为所需输出。这些表t1和t2不会改变,而是保持不变
有四种类型的联接。您可以阅读这些连接类型,然后尝试使用它们进行练习。这里我使用了full\u 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
t3mydata这里是代码:库(dplyr)DF1=read.csv('not_sep.csv',header=TRUE,stringsAsFactors=FALSE)DF2=read.csv('pcr_sep.csv',header=TRUE,stringsAsFactors=FALSE)mydata