Jak sortować według wielu kolumn w r (z przykładami)


Do sortowania ramki danych w wielu kolumnach w języku R można użyć dowolnej z następujących metod:

Metoda 1: Użyj podstawy R

 df[order(-df$column1, df$column2), ]

Metoda 2: użyj dplyr

 library (dplyr)

df %>%
  arrange( desc (column1), column2)

Poniższe przykłady pokazują, jak w praktyce zastosować każdą metodę z następującą ramką danych:

 #create data frame
df <- data. frame (team=c('A', 'B', 'C', 'D', 'E', 'F', 'G'),
                 points=c(90, 90, 93, 91, 91, 99, 85),
                 assists=c(33, 28, 31, 39, 34, 40, 44))

#view data frame
df

  team points assists
1 A 90 33
2 B 90 28
3 C 93 31
4 D 91 39
5 E 91 34
6 F 99 40
7 G 85 44

Metoda 1: Użyj podstawy R

Poniższy kod pokazuje, jak posortować blok danych oparty na R według punktów malejących (od największego do najmniejszego), a następnie według asyst rosnących:

 #sort by points descending, then by assists ascending
df[order(-df$points, df$assists), ]

  team points assists
6 F 99 40
3 C 93 31
5 E 91 34
4 D 91 39
2 B 90 28
1 A 90 33
7 G 85 44

Należy pamiętać, że wiersze w ramce danych są uporządkowane według punktów od największego do najmniejszego, a następnie według asyst od najmniejszego do największego.

Metoda 2: użyj dplyr

Poniższy kod pokazuje, jak używać funkcji pakietu dplyr do sortowania ramki danych według punktów malejących (od największego do najmniejszego), a następnie według asysty rosnącej:

 library (dplyr)

df %>%
  arrange( desc (dots), assists)

  team points assists
1 F 99 40
2 C 93 31
3 E 91 34
4 D 91 39
5 B 90 28
6 A 90 33
7 G 85 44

Ponownie wiersze w ramce danych są uporządkowane według punktów od największego do najmniejszego, a następnie według asyst od najmniejszego do największego.

Uwaga : pełną dokumentację funkcji aranżacji() można znaleźć tutaj .

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe operacje sortowania w R:

Jak sortować wartości alfabetycznie w R
Jak posortować ramkę danych według daty w R

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *