基于匹配字符的折叠因子级别

问题描述 投票:0回答:1

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

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

我正在寻找一个整齐的函数或一个过程,通过该过程可以用匹配的字母折叠因子水平。即,“ 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()
r string matching collapse factors
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.