Если я помню, при вызове factor (x) с аргументом уровней по умолчанию уровни устанавливаются как уровни = sort (unique (x)).
Вы можете отменить это действие, установив уровни = уникальные (x).
Например:
set.seed(1)
x = sample(letters, 100, replace = TRUE)
head(x, 5)
[1] "g" "j" "o" "x" "f"
levels(factor(x))
[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o "" p "" q "" r "" s "
[20] "t" "u" "v" "w" "x" "y" "z"
levels(factor(x, levels = unique(x)))
[1] "g" "j" "o" "x" "f" "y" "r" "q" "b" "e" "u" "m" "s" "z" "d "" k "" a "" w "" i "
[20] "p" "v" "c" "n" "t" "l" "h"
Вы можете видеть, что установка уровней = unique (x) сохраняет порядок вхождения в данных.