Свернуть уровни факторов на основе совпадающих символов - PullRequest
0 голосов
/ 25 октября 2019

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

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

Я ищу аккуратную функцию или процесс, с помощью которого можно свернуть уровни факторов с помощью соответствующих букв. То есть, «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()

1 Ответ

2 голосов
/ 25 октября 2019

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

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...