我有一个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.integer
和as.numeric
存在问题)。在这个因素中我也有近100个级别,因此手动重新定义因子的级别需要我写出每个级别也不理想。
答案 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