Попробуйте это с:
library(dplyr)
dat %>%
group_by(col1, col2) %>%
filter(length(unique(col3)) > 1) %>%
distinct()
Если dat
выглядит следующим образом:
dat <- structure(list(col1 = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1), col2 = c("A", "A", "A", "A", "A", "A", "A", "A", "A",
"A", "A", "A", "A", "A", "A"), col3 = c("Z", "Z", "Z", "Z", "Z",
"Z", "Z", "Z", "Z", "Z", "Z", "Z", "Z", "Z", "Z")), class = "data.frame", row.names = c(NA,
-15L))
Вы не получаете строк следующим образом:
# A tibble: 0 x 3
# Groups: col1, col2 [0]
# ... with 3 variables: col1 <dbl>, col2 <chr>, col3 <chr>
Если dat
соответствует исходному сообщению, вы получите результат, который вам нужен:
# A tibble: 2 x 3
# Groups: col1, col2 [1]
col1 col2 col3
<dbl> <chr> <chr>
1 1 A Z
2 1 A Y
Обратите внимание, что я использую length(unique())
в фильтре вместо n_distinct
, потому что есть ошибка dplyr
, из-за которой n_distinct
в фильтре сгруппированного фрейма данных работает очень медленно.