根据另一列的值删除一列中的重复信息

时间:2019-05-08 00:24:13

标签: r dataframe

我有以下两个数据框:

Dt1

barcode ID
1       AA
2       AA
3       AA
4       BB
5       BB
6       CC
7       DD
8       EE

Dt 2

barcode weight
1       55
3       45
6       35
7       80

我想合并数据框,使其以条形码为基础删除重复或不重复的ID,我的最终数据框将如下所示:

   barcode  ID 
    4       BB   
    5       BB
    8       EE

我尝试了几个命令,但是任何一个都可以。

2 个答案:

答案 0 :(得分:5)

使用

Idremove = Dt1$ID[Dt1$barcode %in% Dt2$barcode]
Dt1 = Dt1[!Dt1$ID %in% Idremove, ]

答案 1 :(得分:1)

Tidyverse解决方案:

library(tidyverse)

Dt1%>%
  group_by(ID)%>%
  filter(all(!barcode %in% Dt2$barcode))%>%
  ungroup()

# A tibble: 3 x 2
  barcode ID   
    <int> <chr>
1       4 BB   
2       5 BB   
3       8 EE   

数据:

Dt1 <- tribble(
  ~barcode, ~ID,
     1L,       'AA',
     2L,       'AA',
     3L,       'AA',
     4L,       'BB',
     5L,       'BB',
     6L,       'CC',
     7L,       'DD',
     8L,       'EE')

Dt2 <- tribble (
  ~barcode, ~weight,
    1L,       55L,
    3L,       45L,
    6L,       35L,
    7L,       80L)