2016-07-24 56 views
-1

我有一個數據幀,Game的一列,由以下組成:(無引號)排序中的R的字符向量包含的字母和數字

"Euro Round 1 West" 
"Euro Round 2 Broncos"   
"Euro Round 3 Tigers"  
"Euro Round 4 Tigers"  
"Euro Round 5 Broncos"  
"Euro Round 6 West"  
"Premier12 Round 1 Eagles" 
"Premier12 Round 10 Mac" 
"Premier12 Round 11 Cats" 
"Premier12 Round 12 Owls" 
"Premier12 Round 13 Devils" 
"Premier12 Round 14 Zebras"  
"Premier12 Round 15 Cats" 
"Premier12 Round 16 Zebras"  
"Premier12 Round 17 Owls" 
"Premier12 Round 2 Eagles" 
... 

我想數據幀是按此專欄排序。

首先按字母順序「歐元」或「Premier12」,然後數值由「回合_」

然而,你可以看到的第二部分的上方,即數值順序是像這樣:1,10,11,12 ,13,14,15,16,17,2,3,4,...

我該如何解決這個問題?

而且,有可能有這個也改變字符訂購併在括號中添加像這樣:

"West (Euro Round 1)" 
"Broncos (Euro Round 2)"   
"Tigers (Euro Round 3)" 
"Tigers (Euro Round 4)"  
"Broncos (Euro Round 5)"  
"West (Euro Round 6)"  
"Eagles (Premier12 Round 1)" 
"Eagles (Premier12 Round 2)" 
"Devils (Premier12 Round 3)" 
... 

要不然:

"West, Euro Round 1" 
"Broncos, Euro Round 2"   
"Tigers, Euro Round 3" 
"Tigers, Euro Round 4"  
"Broncos, Euro Round 5"  
"West, Euro Round 6"  
"Eagles, Premier12 Round 1" 
"Eagles, Premier12 Round 2" 
"Devils, Premier12 Round 3" 
... 

感謝

我已閱讀How to sort a character vector where elements contain letters and numbers in R?,這與我的問題類似,但我無法弄清楚

回答

1

首先讓所有的名單

mylist <- list() 

把名稱列表

mylist <- "Premier12 Round 16 Zebras" 

您正在尋找的功能是strsplit

name_string <- strsplit(mylist[1], " ") 

上面會分割你的名字在空間。

只需在每個矢量中選擇第三個字來獲取數字。

name_string[3] 

循環顯示您的列表。

創建一個空數據幀

mydata <- data.frame() 

rownames(mydata) <- c(1:20) 

店每名在其適當rowname你循環

strsplit相反的是paste0()。這是你可以插入括號的地方

相關問題