仅保留仅重复一次的行

时间:2019-04-15 18:42:47

标签: r duplicates

我有一个数据集,如下所示:

A         B      C 
liver     5      RX
blood     9      DK 
liver     7      DK
intestine 5      RX
blood     3      DX
blood     1      DX
skin      2      RX
skin      2      DX

我只想保留基于A的重复项(而不是三重等)。这意味着如果A中的值重复,则应打印整行。

理想的输出如下:

A         B      C 
liver     5      RX
liver     7      DK
skin      2      RX
skin      2      DX

我尝试将以下代码用于dplyr

df %>% group_by(A) %>% filter(n() >= 1)

有人可以在这里帮助我吗?

1 个答案:

答案 0 :(得分:7)

您可以这样做:

df %>%
 group_by(A) %>%
 filter(n() == 2)

  A         B C    
  <chr> <int> <chr>
1 liver     5 RX   
2 liver     7 DK   
3 skin      2 RX   
4 skin      2 DX 

或更复杂的方法:

df %>%
 add_count(A) %>%
 filter(n == 2) %>%
 select(-n)

或者:

df %>%
 group_by(A) %>%
 filter(max(row_number()) == 2) 

考虑到您可能希望基于“ A”列的重复案例在其他方面是唯一的:

df %>%
 group_by(A) %>%
 distinct() %>%
 filter(n() == 2)