基于这个问题dd
,我订购了一个包含两个因素的 date.frameb
和x
dd <- data.frame(b = factor(c("Hi", "Med", "Hi", "Low"), levels = c("Low", "Med", "Hi"), ordered = TRUE),
x = factor(c("A", "D", "A", "C")),
y = c(8, 3, 9, 9),
z = c(1, 1, 1, 2))
dd <- dd[with(dd, order(b, x)), ]
b x y z
Low C 9 2
Med D 3 1
Hi A 8 1
Hi A 9 1
级别的顺序dd$x
并不反映 dd$x 的实际顺序,而是按字母顺序排列的。
levels(dd$x)
[1] "A" "C" "D"
我想要与 data.frame 中相同的级别顺序,即“C”、“D”、“A”
我当然可以这样做
dd$x <- factor(dd$x, levels = c("C","D","A"))
但我需要一些通用的东西。我试过了
dd$x <- factor(as.character(dd$x))
但是级别的帮助状态:
默认值是 as.character(x) 采用的唯一值集,按 x 的升序排序。
我怎样才能拥有一个独特的价值 sef,即“未分类”?
我试图了解功能因素,特别是参数级别因素,但这超出了我的有限理解。
我找到了一个解决方案,但我无法应用它:
dd <- within(dd, x <- reorder(x, b))