Я бы сделал это так:
library(tidyr)
library(dplyr)
dat %>% separate(Name, into = c("pair1", "pair2"), sep = " - ", remove = FALSE) %>%
mutate(p1 = pmin(pair1, pair2), p2 = pmax(pair1, pair2)) %>%
distinct(p1, p2, .keep_all = TRUE) %>%
select(-pair1, -pair2, -p1, -p2)
# # A tibble: 6 x 1
# Name
# <chr>
# 1 A,Y - B,X
# 2 C,Q - W,R
# 3 E,F - B,T
# 4 E,T - F, B
# 5 Q,P - P,O
# 6 T,U - K,M
Разделите пары, используйте pmin
и pmax
для их последовательной сортировки и, наконец, дедупликации для отсортированных пар (сохраняя только первое вхождение).