子集来自另一个数据集的所有数据

时间:2016-11-22 23:47:20

标签: r

我希望保留dts1的所有数据,即我在dts2中拥有其交易ID 这是我的数据:

dts1 <- data.frame (id = c(1,2,3,4,1,1), transactionID =c (10,22,47,15,13,NA))

dts2 <- data.frame ( transactionID = c(10,9,20,22))

dts1中,我的交易ID 10属于ID 1,交易22属于ID 2. 因此,我希望保留Id 1和id 2中的所有数据并删除有关的数据其他ID :我的理想输出是:

  id transactionID
  1            10
  2            22
  1            13
  1            NA

这个没有保留有关ids的所有信息

dts3  <- dts1 [dts1$transactionID %in%  dts2$transactionID,]

2 个答案:

答案 0 :(得分:2)

双重合并:

merge(merge(dts1,dts2)["id"], dts1)
#  id transactionID
#1  1            10
#2  1            13
#3  1            NA
#4  2            22

答案 1 :(得分:2)

您可以分两步完成:

首先你得到dts2中有交易的id,如下所示:

dts1 [dts1$transactionID %in%  dts2$transactionID ,1]
[1] 1 2

然后你得到了具有这些ID的交易:

dts1[dts1$id %in% dts1[dts1$transactionID %in% dts2$transactionID ,1],]
  id transactionID
1  1            10
2  2            22
5  1            13
6  1            NA