我有这个向量:
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
顺序的同时进行替换?
答案 0 :(得分:3)
您必须在因素的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
通过这种方式,除了因子水平的显示方式外,您的顺序因子不会改变。
答案 1 :(得分:2)
删除“。”之后。您可以像以前一样重新排序x
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)