Уровни фактора свертывания на основе совпадающих символов

У меня много факторных векторов в тибле. Это опрос, поэтому уровни представляют собой буквенные коды.

Инструмент опроса включает в себя порядок букв, выбранный во время опроса (с помощью кликера), что может или не может быть полезным в зависимости от вопроса.

Я ищу аккуратную функцию или процесс, с помощью которого можно свернуть уровни факторов с соответствующими буквами. То есть, «B, A» = «A, B», и это сворачивается только до «A, B».

Или «B, C, A» = «C, A, B» = «A, B, C» или любая комбинация букв A, B, C. У меня может быть максимум 5 букв на уровне факторов, так что это может быстро усложниться.

Должен ли я преобразовать его в строку символов, а затем использовать stringi или grepl, чтобы разбить его на несколько столбцов? У меня много столбцов, поэтому я ищу отличное решение. Любые идеи?

Вот пример простой строки в моих данных:

string<-c("E","C","A","A,B","A,B,C","B,A","C,A,B") %>% as.factor()

person pythagoras    schedule 25.10.2019    source источник


Ответы (1)


разделить запятыми, отсортировать, вставить вместе.

string %>% strsplit(split = ",", fixed = TRUE) %>%
  lapply(sort) %>%
  sapply(paste, collapse = ",") %>%
  factor
# [1] E     C     A     A,B   A,B,C A,B   A,B,C
# Levels: A A,B A,B,C C E
person Gregor Thomas    schedule 25.10.2019
comment
Ах, так просто - сортировка. Я, должно быть, сильно над этим подумал. Спасибо! Это отлично. - person pythagoras; 26.10.2019