在R中仅在一个组中查找重复项

时间:2017-07-23 11:29:10

标签: r

我在R

中有以下数据框
Number      ship_no
4432          1
4432          2
4564          1
4389          5
6578          6
4389          3
4355          10
4355          10
4689          12
4689          12

我想在一个Number

中找到重复的ship_no
Number       ship_no
 4355          10
 4689          12

我怎样才能在R?

中这样做

2 个答案:

答案 0 :(得分:1)

在这种情况下,您可以这样做:

df[duplicated(df),]

   Number ship_no
8    4355      10
10   4689      12

因为

> duplicated(df)
 [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE

如果同一行可能有两个以上的重复项,可能将它包装在unique()中。

保留其他副本:

library(dplyr)
df %>% group_by(Number) %>%
  filter(duplicated(Number) | duplicated(Number,fromLast=TRUE)) %>%
  summarize(ship_no = paste0(unique(ship_no), collapse = ','))

  A tibble: 4 x 2
  Number ship_no
   <int>   <chr>
1   4355      10
2   4389     5,3
3   4432     1,2
4   4689      12

答案 1 :(得分:0)

以下是使用data.table

的选项
library(data.table)
setDT(df)[,  unique(.SD[.N > 1 & uniqueN(Number)==1]) ,  ship_no]
#   ship_no Number
#1:      10   4355
#2:      12   4689