我怎么能订购像这样的矢量
c("7","10a","10b","10c","8","9","11c","11b","11a","12") -> alph
在
alph
[1] "7","8","9","10a","10b","10c","11a","11b","11c","12"
并使用它来对data.frame进行排序
V1 <- c("A","A","B","B","C","C","D","D","E","E")
V2 <- 2:1
V3 <- alph
df <- data.frame(V1,V2,V3)
并命令行获取(订单V2,然后V3)
V1 V2 V3
C 1 9
A 1 10a
B 1 10c
D 1 11b
E 1 12
A 2 7
C 2 8
B 2 10b
E 2 11a
D 2 11c
1 回答
要对data.frame进行排序,请使用
mixedorder
多个向量的
mixedorder(列)
显然
mixedorder
无法处理多个向量 . 我已经创建了一个函数,通过将所有字符向量转换为具有混合排序的级别的因子,并将所有向量传递给标准order
函数来绕过这个 .但是,在您的特定情况下
multi.mixedorder
会获得与标准order
相同的结果,因为V2
是数字 .请注意
19:10
相当于c(19:10)
.c
表示concat,即用多个short做一个长向量,但在你的情况下你只有一个向量(19:10
),所以不需要连接任何东西 . 但是,在V1
的情况下,你有10个长度为1的向量,所以你需要连接,就像你已经做的那样 .您需要
stringsAsFactors=FALSE
才能将V1
和V3
转换为(错误排序)因子(这是默认值) .