首页 > 解决方案 > 将两个数据集与数据表合并,但保留其中一个相同的列

问题描述

还没有找到这个,所以我们开始吧。我正在使用数据表,我想合并两个长度不同的表。我已经成功地做到了。

所以基本上我合并了所有行,其中我的表 1 中的关键属性“名称,日期 1”与表 2 中的关键属性“名称,日期 2”相同。

我遇到的问题是,我的表 2 中的 Date2 消失了。我不喜欢那个。我想从我的表 2 中保留我的 date2。

例子:

表格1

Name   Date1
A      2018-01-01
A      2018-01-02
A      2018-01-03

表2

Name   Date2
A      2018-01-01
A      2018-01-02
A      2018-01-15

而不是在我的

新表

Name   Date
A      2018-01-01
A      2018-01-02
A      NA

它应该看起来像这样

Name   Date1         Date2
A      2018-01-01    2018-01-01
A      2018-01-02    2018-01-02
A      NA            NA

有谁知道诀​​窍?

标签: rdata.table

解决方案


Date2 不会在输出中重复,因为它用作键并且在您进行等值连接时本质上是相同的数据。既然你在做all.x=TRUE,它是一个左连接,只有左表(即ONE与任何其他非键列一起返回)。

如果你真的想要,你可以复制 Date2 到 Date1 并使用 Date1 加入如下:

TWO[, Date1:=Date2][ONE, on=.(Name, Date1)]
#   Name      Date2      Date1
#1:    A 2018-01-01 2018-01-01
#2:    A 2018-01-02 2018-01-02
#3:    A         NA 2018-01-03

数据:

library(data.table)
ONE <- fread("Name   Date1
A      2018-01-01
A      2018-01-02
A      2018-01-03")
TWO <- fread("Name   Date2
A      2018-01-01
A      2018-01-02
A      2018-01-15")

推荐阅读