按基于整数的因子排序data.frame

时间:2015-10-09 03:37:14

标签: r dataframe r-factor

我有一个data.frame,其中一个最初包含整数值的列被转换为一个因子(在我拥有的任何数据的上游)。

我想根据这个因素对data.frame进行排序,但是对结果进行排序,使得这个因子的顺序是" 1 2 3"而不是" 1 11 12,"当我使用order而没有其他操作时会发生什么:

sample <- data.frame(a = c(1,2,2,3,4), b= factor(c("1","12","11","2","3")))
sample
  a  b
1 1  1
2 2 12
3 2 11
4 3  2
5 4  3
sample[order(sample$b),]
  a  b
1 1  1
3 2 11
2 2 12
4 3  2
5 4  3

由于我希望该列仍然是我的最终数据集中的一个因素,我对将列转换为整数犹豫不决(因为应用于因子时as.integeras.numeric存在问题)。在这个因素中我也有近100个级别,因此手动重新定义因子的级别需要我写出每个级别也不理想。

1 个答案:

答案 0 :(得分:3)

转换&#39; b&#39;后,我们可以order数据集行numeric类的列,但&#39;&#39;的class。仍然是factor

sample1 <- sample[order(as.numeric(as.character(sample$b))),]
row.names(sample1) <- NULL
str(sample1)
#'data.frame':   5 obs. of  2 variables:
#$ a: num  1 3 4 2 2
#$ b: Factor w/ 5 levels "1","11","12",..: 1 4 5 2 3

sample1
#  a  b
#1 1  1
#2 3  2
#3 4  3
#4 2 11
#5 2 12