防止因子水平的分类

时间:2013-06-03 12:45:22

标签: r sorting

当我在R中提取数据帧列的因子级别时,它们会自动排序(按字母顺序排列)。我怎么能阻止这个?也就是说,我希望级别的顺序与数据框列中的顺序相同。

data.frame(Names = c("Paul McCartney", "John Lennon")) -> my.data
levels(my.data$Names)
  

[1]“约翰列侬”“保罗麦卡特尼”

2 个答案:

答案 0 :(得分:7)

阅读数据后重新分配因子:

x <- data.frame(x=letters[c(2,1,2)], y=1:3)
x$x
## [1] b a b
## Levels: a b
x$x <- factor(x$x, levels=unique(x$x))
x$x
## [1] b a b
## Levels: b a

答案 1 :(得分:1)

如果您想阻止因子的排序,您需要专门将因子水平交给levels

factor(c("Paul McCartney", "John Lennon"), levels = c("Paul McCartney", "John Lennon"))
## [1] Paul McCartney John Lennon   
## Levels: Paul McCartney John Lennon

在您的情况下,您应该在创建factor之前创建data.frame并将factor粘贴到data.frame

f1 <- factor(c("Paul McCartney", "John Lennon"), levels = c("Paul McCartney", "John Lennon"))
my.data <- data.frame(Names = f1)
levels(my.data$Names)

## [1] "Paul McCartney" "John Lennon"