我找了一個建議,請有關排序與字母數字組件data.frame
:排序在R A data.frame
假設我們有:
A = c("A1","A10","A11","A2")
B = c(1,2,3,4)
C = data.frame(A,B)
我怎麼能排序Çdata.frame
在這樣的我們在最後的方式:
C$A
按照「A1」,「A2」,「A10」,「A11」的順序排列。
我找了一個建議,請有關排序與字母數字組件data.frame
:排序在R A data.frame
假設我們有:
A = c("A1","A10","A11","A2")
B = c(1,2,3,4)
C = data.frame(A,B)
我怎麼能排序Çdata.frame
在這樣的我們在最後的方式:
C$A
按照「A1」,「A2」,「A10」,「A11」的順序排列。
假設在每個條目的開頭只有一個字母組件,合理的策略是先按該字母排序(使用字符(字母順序排列)),然後按數字組件排序(使用數字排序)
(我假設你可能想用這個地方的信件是不是恆定的。)
你可以這樣做:
C[order(substr(A,1,1), as.numeric(substr(A, 2,length(A)))),]
如果字符串超過1個字母更普遍遵循一個號碼,你coul d使用正則表達式來選擇合適的字符串進行排序。
您可以嘗試使用「gtools」軟件包中的mixedorder
。下面介紹一下它的作用:
> library(gtools)
> mixedorder(as.character(C$A))
[1] 1 4 2 3
因此,由 「A」 列進行排序:
C[mixedorder(as.character(C$A)), ]
## A B
## 1 A1 1
## 4 A2 4
## 2 A10 2
## 3 A11 3
您還可以使用相同的排序:
order(nchar(as.character(C$A)))
## [1] 1 4 2 3