2015-06-21 66 views
0

我找了一個建議,請有關排序與字母數字組件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」的順序排列。

回答

3

假設在每個條目的開頭只有一個字母組件,合理的策略是先按該字母排序(使用字符(字母順序排列)),然後按數字組件排序(使用數字排序)

(我假設你可能想用這個地方的信件是不是恆定的。)

你可以這樣做:

C[order(substr(A,1,1), as.numeric(substr(A, 2,length(A)))),] 

如果字符串超過1個字母更普遍遵循一個號碼,你coul d使用正則表達式來選擇合適的字符串進行排序。

0

您可以嘗試使用「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