Подтвердить что ты не робот

Найти дублированные элементы с помощью dplyr

Я попытался использовать представленный код здесь, чтобы найти ВСЕ дублированные элементы с dplyr следующим образом:

library(dplyr)

mtcars %>%
mutate(cyl.dup = cyl[duplicated(cyl) | duplicated(cyl, from.last = TRUE)])

Как мне преобразовать представленный код здесь, чтобы найти ВСЕ дублированные элементы с dplyr? Мой код выше просто порождает ошибку? Или еще лучше, есть ли еще одна функция, которая будет достигать этого более лаконично, чем запутанный подход x[duplicated(x) | duplicated(x, from.last = TRUE)])?

4b9b3361

Ответ 1

Я думаю, вы могли бы использовать filter для этой цели:

mtcars %>% 
  group_by(carb) %>% 
  filter(n()>1)

Небольшой пример (обратите внимание, что я добавил summarize(), чтобы доказать, что результирующий набор данных не содержит строк с дублирующимся "carb" . Я использовал "carb" вместо "cyl", потому что "carb" имеет уникальные значения, тогда как "cyl 'не):

mtcars %>% group_by(carb) %>% summarize(n=n())
#Source: local data frame [6 x 2]
#
#  carb  n
#1    1  7
#2    2 10
#3    3  3
#4    4 10
#5    6  1
#6    8  1

mtcars %>% group_by(carb) %>% filter(n()>1) %>% summarize(n=n())
#Source: local data frame [4 x 2]
#
#  carb  n
#1    1  7
#2    2 10
#3    3  3
#4    4 10

Ответ 2

Мы можем найти дублированные элементы с dplyr следующим образом.

library(dplyr)

# Only duplicated elements
mtcars %>%
  filter(duplicated(.[["carb"]])

# All duplicated elements
mtcars %>%
  filter(carb %in% unique(.[["carb"]][duplicated(.[["carb"]])]))