возвращать строки, элементы которых являются дубликатами, а не логическим вектором - PullRequest
0 голосов
/ 27 мая 2018

Я знаю дублированную функцию пакета dplyr.Проблема в том, что он возвращает только логический вектор, указывающий, какие элементы (строки) являются дубликатами.Я хочу получить вектор, который возвращает эти строки с определенными элементами.

Я хочу получить обратно все наблюдения A и B, потому что они имеют для ключа Name и года дублированные значения.

Я уже закодировал это:

 >df %>% group_by(Name) %>% filter(any(( ?????)))

, но я не знаю, как написать последнюю часть кода.

У кого-нибудь есть идеи?

Спасибо :))1012 *

1 Ответ

0 голосов
/ 27 мая 2018

Опция, использующая dplyr, может быть достигнута путем группировки по Name и Year для вычисления количества.Затем сгруппируйте только по Name и отфильтруйте по группам, имеющим count > 1 (имеется в виду дубликат):

library(dplyr)

df %>% group_by(Name, Year) %>% 
  mutate(count = n()) %>%
  group_by(Name) %>%
  filter(any(count > 1)) %>%
  select(-count)

# # A tibble: 7 x 3
# # Groups: Name [2]
#   Name   Year Value
#   <chr> <int> <int>
# 1 A      1990     5
# 2 A      1990     3
# 3 A      1991     5
# 4 A      1995     5
# 5 B      2000     0
# 6 B      2000     4
# 7 B      1998     5

Данные:

df <- read.table(text = 
"Name    Year    Value
A       1990     5
A       1990     3
A       1991     5
A       1995     5
B       2000     0
B       2000     4
B       1998     5
C       1890     3
C       1790     2",
header = TRUE, stringsAsFactors = FALSE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...