基于匹配字符的崩溃因子级别

时间:2019-10-25 12:52:01

标签: r string matching collapse factors

我在小标题中有许多因子向量。这是一项调查,所以级别是字母代码。

调查工具结合了在调查时选择的字母顺序(从答题器中选择),根据问题的不同,该顺序可能有用也可能无效。

我正在寻找一个整齐的函数或一个过程,通过该过程可以用匹配的字母折叠因子水平。 即,“ 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 个答案:

答案 0 :(得分:2)

用逗号分隔,排序,粘贴在一起。

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