2017-04-13 2 views

Antwort

-1

Sie könnte auch die order Funktion mit method = "radix" verwenden, die es ermöglicht, einen Vektor für das Argument decreasing zu übergeben:

## Generate sample data: 
set.seed(123) 
dat <- data.frame(a = letters[sample(1:5, 20, replace = TRUE)], 
    b = rep(c("orange", "apple", "pear", "banana"), 5)) 
## Sort by increasing a and decreasing b: 
dat2 <- dat[order(dat$a, dat$b, decreasing = c(FALSE, TRUE), method = "radix"),] 

head(dat2) 
    a  b 
15 a pear 
6 a apple 
18 a apple 
19 b pear 
1 b orange 
17 b orange 

Alternativ Sie beiden Spalten in aufsteigender Reihenfolge sortiert werden könnten und umgekehrt nur Spalte b die Funktion rev mit:

dat3 <- dat[order(dat$a, rev(dat$b)),] 

head(dat3) 
    a  b 
15 a pear 
6 a apple 
18 a apple 
19 b pear 
1 b orange 
17 b orange 
+0

Ich fand gerade diese Methode funktioniert nicht. Nur die Spalte b Ihrer Probe ist nicht nach unten sortiert. – raccoonjin

+0

Die Sortierung gibt der Spalte a Priorität. Für doppelte Werte von a wird Spalte b in absteigender Reihenfolge sortiert. Sie können einen Datenrahmen im Allgemeinen nicht so sortieren, dass zwei Spalten in einer bestimmten Reihenfolge stehen. – ikop

0

Sie Reihen von Variablen leicht mit dplyr::arrange

Beispiel arrangieren:

set.seed(123) 
dat <- data.frame(a= letters[sample(1:26, 20)], 
     b = rep(c("orange", "apple", "pear", "banana"), 5)) 
dat %>% arrange(a, desc(b)) 
+0

Vielen Dank, jedoch gibt es eine andere Art und Weise Basispaket mit? – raccoonjin

+0

Überprüfen Sie diese stattdessen ... http://StackOverflow.com/Questions/1296646/How-to-sort-a-Dataframe-by-columns –

Verwandte Themen