R 中的混合顺序数据框

geo*_*_dd 0 sorting mixed r

我有一个数据框,如下所示:

a = c("1A","10A","11A","2B","2C","22C","3A","3B")
b= c(1,2,3,4,5,6,7,8)
ab = data.frame(a,b)
Run Code Online (Sandbox Code Playgroud)

我想根据列排序a。我尝试了混合订单

library(gtools)
ab[mixedorder(ab$a),]
Run Code Online (Sandbox Code Playgroud)

但我没有得到我想要的结果(1A,2B,2C,3A,3B..)。我怎样才能解决这个问题?

akr*_*run 5

我们需要转换为character类(因为 'a' 列基于call iefactor中的默认选项)data.framestringsAsFactors=TRUE

ab[mixedorder(as.character(ab$a)),]
#    a b
#1  1A 1
#4  2B 4
#5  2C 5
#7  3A 7
#8  3B 8
#2 10A 2
#3 11A 3
#6 22C 6
Run Code Online (Sandbox Code Playgroud)

此处还解释了其他选项