2016-07-24 34 views
-1

I eine Spalte mit einem Datenrahmen aufweisen, Game, bestehend aus den folgenden: (ohne Anführungszeichen)einen Zeichenvektor in R Sortierung, die Buchstaben und Zahlen enthält

"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" 
... 

ich den Datenrahmen sein möchte geordnet nach dieser Spalte.

erste alphabetisch nach ‚Euro‘ oder ‚Premier12‘ und dann numerisch ‚Round _‘

jedoch, wie Sie über dem zweiten Teil sehen können, dh numerische Reihenfolge ist wie folgt: 1, 10, 11, 12 , 13, 14, 15, 16, 17, 2, 3, 4, ...

Wie kann ich das beheben?

Auch wäre es möglich, diese zu haben aber auch die Zeichen zu ändern, wie dies in Klammern bestellen und fügen:

"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)" 
... 

Oder:

"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" 
... 

Dank

I habe gelesen How to sort a character vector where elements contain letters and numbers in R?, die meinem Problem ähnlich ist, aber ich kann es nicht herausfinden

Antwort

1

zunächst eine Liste aller Namen machen

mylist <- list() 

die Namen in der Liste setzen

mylist <- "Premier12 Round 16 Zebras" 

die Funktion die Sie suchen, ist strsplit

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

die oben wird teilen Sie Ihre Namen in den Räumen.

wählen Sie einfach das 3. Wort in jedem Vektor, um die Zahl zu erhalten.

name_string[3] 

Schleife über Ihre Liste.

machen einen leeren Datenrahmen

mydata <- data.frame() 

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

store jeden Namen in seiner entsprechenden rowName wie Sie Schleife

das Gegenteil von strsplitpaste0() ist. Hier können Sie Klammern einfügen