如何在分解 R 中的列后保持级别顺序

How to maintain order of levels after factorizing column in R

我有一个从额叶到顶叶的不同电极排列 (25x25=625)。

> head(grph_test)
  Elec1 Elec2
1   Fp1   Fp1
2   Fp1   Fp2
3   Fp1    F7
4   Fp1    F3
5   Fp1    Fz
6   Fp1    F4

问题是我想对列进行因式分解,但它会将级别顺序更改为字母顺序,这对我的目的没有用。

> test$Elec1 <- factor(test$Elec1, ordered = is.ordered(test$Elec1))
> levels(grph_test$Elec1)
 [1] "C3"  "C4"  "CP1" "CP2" "CP5" "CP6" "Cz"  "F3"  "F4"  "F7"  "F8"  "FC1" "FC2" "FC5" "FC6" "Fp1" "Fp2" "Fz"  "Oz"  "P3"  "P4"  "P7"  "P8" 
[24] "POz" "Pz" 

虽然我的预期是它们最终会按照与原始专栏相同的顺序排列,但原始专栏遵循如下列表:

"Fp1","Fp2","F7","F3","Fz","F4","F8","FC5","FC1","FC2","FC6","C3","Cz","C4","CP5","CP1","CP2","CP6","P7","P3","Pz","P4","P8","POz","Oz"

我认为,根据文档,ordered = is.ordered(test$Elec1) 参数能够保持原始顺序,但如您所见,它不能。

知道为什么吗?谢谢!

我们可以在 factorlevels 参数中使用 unique 作为 unique returns 该元素第一次出现的唯一值,因此它保持与原始数据相同的出现顺序

test$Elec1 <- factor(test$Elec1, levels = unique(test$Elec1))

注意:is.ordered returns 逻辑输出