2017-12-01 4 views
-1

Ich habe einen Datenrahmen mit zwei Spalten (beide enthalten Duplikate), die ich von einem Vektor bestellen möchte. Hier ist ein MWE:Wie bestelle ich einen Datenrahmen mit Duplikaten durch einen Vektor?

target_order <- c("a", "b", "c") 
df <- data.frame(col1 = c("c", "a", "b", "a", "a", "c", "c", "b"), 
       col2 = c(1, 1, 2, 5, 4, 2, 6, 7)) 

Mein Ziel ist es df von target_order basierend auf col1 zu bestellen. Nach Order data frame rows according to vector with specific order versuchte ich df[match(target_order, df$col1), ], aber dies nur führte zu:

> df[match(ind_order, df$col1), ] 
    col1 col2 
2 a 1 
3 b 2 
1 c 1 

Wer kann helfen? (Eine Lösung in der Basis R wäre cool.)

Antwort

2

Ihre endgültige gewünschte Ausgabe nicht gegeben wurde, aber vielleicht so etwas wie diese

df[order(match(df$col1, target_order)),] 
    col1 col2 
2 a 1 
4 a 5 
5 a 4 
3 b 2 
8 b 7 
1 c 1 
6 c 2 
7 c 6 
Verwandte Themen