Сохраняйте порядок факторов после применения gsub к нему - PullRequest
0 голосов
/ 26 июня 2018

У меня есть этот вектор:

x <- factor(c("A.B", "C.D", "U.X", "X.U", "A.A"))

, который затем заказывается:

x <- factor(x, levels=rev(levels(x)), ordered=T)
x
[1] A.B C.D U.X X.U A.A
Levels: X.U < U.X < C.D < A.B < A.A

Я хочу удалить "." и замените его пробелами:

x <- as.factor(gsub(".", " ", x, fixed=TRUE))

но этот фактор не сохраняет нетронутым:

x
[1] A B C D U X X U A A
Levels: A A A B C D U X X U
str(x)
Factor w/ 5 levels "A A","A B","C D",..: 2 3 4 5 1

Как я могу выполнить замену на x при сохранении заказа?

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

После удаления "." Вы можете изменить порядок х, как вы делали раньше

x <- factor(x, levels=rev(levels(x)), ordered=T)

Или вы можете сделать замену и изменить порядок в одной строке таким образом

x <- factor(as.factor(gsub(".", " ", x, fixed=TRUE)), levels=rev(levels(as.factor(gsub(".", " ", x, fixed=TRUE)))), ordered=T)
0 голосов
/ 26 июня 2018

Вы должны работать на levels фактора:

x <- factor(c("A.B", "C.D", "U.X", "X.U", "A.A"))
x <- factor(x, levels=rev(levels(x)), ordered=T)
levels(x) <- gsub(".", " ", levels(x), fixed=TRUE)
x
# [1] A B C D U X X U A A
# Levels: X U < U X < C D < A B < A A
str(x)
# Ord.factor w/ 5 levels "X U"<"U X"<"C D"<..: 4 3 2 1 5

Таким образом, ваш упорядоченный коэффициент не изменяется, за исключением того, как отображаются уровни факторов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...