【问题标题】:How to merge matched data and still display the unmatched data in R如何合并匹配的数据并仍然在R中显示不匹配的数据
【发布时间】:2021-01-09 07:14:45
【问题描述】:

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

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 出现在结果中。

【问题讨论】:

  • mydata &lt;- merge(DF1, DF2, by="EmpID",all =TRUE) ?
  • 这里是代码: library(dplyr) DF1=read.csv('not_sep.csv', header=TRUE, stringsAsFactors=FALSE) DF2=read.csv('pcr_sep.csv', header =TRUE, stringsAsFactors=FALSE) mydata

标签: r dataframe join dplyr merge


【解决方案1】:

这些是重要的基本代码函数,对于学习和理解 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-18
    • 2013-04-28
    • 2012-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多