Вот один из вариантов после группировки по «Муниципалитету», отметьте sum
логического вектора (Situation == "ELECTED"
), чтобы получить 1
library(dplyr)
df %>%
group_by(Municipality) %>%
filter(sum(Situation == "ELECTED") == 1)
# A tibble: 3 x 3
# Groups: Municipality [1]
# Candidate Municipality Situation
# <chr> <chr> <chr>
#1 James B ELECTED
#2 Phillip B NON-ELECTED
#3 Bruce B NON-ELECTED
Другой вариант - n_distinct
df %>%
group_by(Municipality) %>%
filter(n_distinct(Candidate[Situation == "ELECTED"]) == 1)
In base R
,
subset(df, ave(Situation == "ELECTED", Municipality, FUN = sum) == 1)
# Candidate Municipality Situation
#5 James B ELECTED
#6 Phillip B NON-ELECTED
#7 Bruce B NON-ELECTED
data
df <- structure(list(Candidate = c("Rose", "Mark", "Linda", "Jhon",
"James", "Phillip", "Bruce"), Municipality = c("A", "A", "A",
"A", "B", "B", "B"), Situation = c("ELECTED", "NON-ELECTED",
"ELECTED", "NON-ELECTED", "ELECTED", "NON-ELECTED", "NON-ELECTED"
)), class = "data.frame", row.names = c(NA, -7L))