我有一个数据框,如下所示:
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..)。我怎样才能解决这个问题?
我们需要转换为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)
此处还解释了其他选项