2016-07-24 3 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" 
... 

Я хотел бы DataFrame быть упорядоченный по этой колонке.

Сначала в алфавитном порядке по «Евро» или «Premier12», а затем численно «Round _»

Однако, как вы можете видеть выше второй части, то есть численный порядок следующим образом: 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" 
... 

Благодаря

I я прочитал 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], " ") 

выше будет разделить ваши имена в пространствах.

просто выберите его 3-е слово в каждом векторе, чтобы получить номер.

name_string[3] 

цикл по вашему списку.

сделать пустой dataframe

mydata <- data.frame() 

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

магазин каждое имя в соответствующем rowname как вы петли

противоположность strsplit является paste0(). здесь вы можете вставить скобки