2017-06-26 3 views
1

Ich habe einen Datenrahmen, wo die Elemente in einer der SpaltenWie ordnen Sie die Strings in meinem unten angegebenen Datenrahmen in einer gewünschten Reihenfolge in R?

"1.cn3.ap.1" 
"7.fr9.ap.3" 
"4.dl.ap.2" 
"5.d2.cr.1" 
"4.dl.u.1" 
"4.dl.ap.1" 

df<- df[order(df$A),] 

#this gave the following result : 
"1.cn3.ap.1" 
"4.dl.ap.1" 
"4.dl.ap.2" 
"4.dl.u.1" 
"5.d2.cr.1" 
"7.fr9.ap.3" 

sind, aber ich brauche, um meine Daten auf diese Weise:

"1.cn3.ap.1" 
"4.dl.u.1" 
"4.dl.ap.1" 
"4.dl.ap.2" 
"5.d2.cr.1" 
"7.fr9.ap.3" 
+0

Hmm, scheint für mich zu arbeiten, wenn es Charakter ist. Das Problem ist wahrscheinlich, dass Ihr 'df $ A' ein Faktor ist. Sie können dies mit 'class (df $ A)' überprüfen. Wenn es ein Faktor ist, den Sie tun könnten: 'df [order (as.character (df $ A))] –

+0

@MikeH. Danke für deine Antwort. Ich habe einige Änderungen in der Frage gemacht, ich habe ein Element "4.dl.u.1" hinzugefügt. Können Sie die Frage noch einmal durchgehen? –

+0

Es wäre viel hilfreicher, wenn Sie tatsächlich angeben könnten, WAS Sie sortieren möchten, anstatt eine gewünschte Reihenfolge zu geben und uns zu bitten, es herauszufinden. In Ihrem Beispiel sieht es so aus, als ob Sie nach (1) absteigender 1. Ziffer, (2) aufsteigend nach den letzten 2 alphabetischen Zeichen, (3) nach absteigender letzter Ziffer suchen möchten. –

Antwort

1

Sie zu erhalten Lage sein kann, was Sie durch die Spaltung brauchen die Daten nach dem Zeitraum und Sortierung auf den einzelnen Spalten, dann bringen Sie die Spalten nach dem Sortieren wieder zusammen. etwas Ähnliches vielleicht?

library(dplyr) 
library(tidyr) 

df <- df %>% 
     separate(A, into = c("part1","part2","part3","part4"), sep = "\\.") %>% 
     arrange(part1, part2, desc(part3), part4) %>% 
     unite(A, part1:part4, sep = ".") 
+0

vielen Dank! das hilft. Aber kannst du das erklären sep = "\\"? –

+1

Die Funktion 'separate' verwendet reguläre Ausdrücke mit dem Parameter 'sep'. Um also einen Punkt als Trennzeichen zu definieren, muss er mit einem umgekehrten Schrägstrich versehen werden. –

Verwandte Themen