【发布时间】:2019-06-01 12:49:33
【问题描述】:
我有一个因子变量,它由两个由_ 分隔的子字符串组成,例如string1_string2。我想分别设置前缀(“string1”)和后缀(“string2”)的因子水平,然后为连接的字符串定义一组整体的因子水平。此外,第一个子字符串和第二个子字符串中级别的优先级可能会有所不同。
我想要实现的一个小例子:
# reproducible data
x <- factor(c("DBO_A", "PH_A", "COND_A", "DBO_B", "PH_B", "COND_B", "DBO_C", "PH_C", "COND_C"))
[1] DBO_A PH_A COND_A DBO_B PH_B COND_B DBO_C PH_C COND_C
Levels: COND_A COND_B COND_C DBO_A DBO_B DBO_C PH_A PH_B PH_C
如果我没有定义因子水平,它们将按字母顺序排列。现在我想设置_分隔符左右两侧的字符串级别,例如
-
PHCOND DBO 在左侧 (LHS)。 -
BA C 在右侧 (RHS)。
此外,我想指定哪一边,LHS 或 RHS,优先于另一边。根据优先级的不同,级别的整体顺序会有所不同:
(1) 如果 LHS 上的级别是先例:
[1] DBO_A PH_A COND_A DBO_B PH_B COND_B DBO_C PH_C COND_C
Levels: PH_B PH_A PH_C COND_B COND_A COND_C DBO_B DBO_A DBO_C
(2) 如果 RHS 上的级别是先例:
[1] DBO_A PH_A COND_A DBO_B PH_B COND_B DBO_C PH_C COND_C
Levels: PH_B COND_B DBO_B PH_A COND_A DBO_A PH_C COND_C DBO_C
现在我只想像factor(x, levels = c(xx, xx, ...))这样解决它,但是我的关卡比上面显示的要多,所以这看起来很荒谬。
注意:我不想更改数据的顺序,只更改级别的顺序。
【问题讨论】:
标签: r refactoring