R'de birden çok sütuna göre sıralama (örneklerle)


Bir veri çerçevesini R’deki birden çok sütuna göre sıralamak için aşağıdaki yöntemlerden herhangi birini kullanabilirsiniz:

Yöntem 1: Base R’yi kullanın

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

Yöntem 2: dplyr’ı kullanın

 library (dplyr)

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

Aşağıdaki örnekler, her yöntemin pratikte aşağıdaki veri çerçevesiyle nasıl kullanılacağını gösterir:

 #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

Yöntem 1: Base R’yi kullanın

Aşağıdaki kod, R tabanlı veri bloğunun azalan noktalara (en büyükten en küçüğe) ve ardından artan asistlere göre nasıl sıralanacağını gösterir:

 #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

Veri çerçevesindeki satırların, en büyükten en küçüğe, ardından da en küçükten en büyüğe doğru noktalara göre sıralandığını unutmayın.

Yöntem 2: dplyr’ı kullanın

Aşağıdaki kod, veri çerçevesini azalan noktalara (en büyüğünden en küçüğe) ve ardından artan yardıma göre sıralamak için dplyr paketindeki işlevlerin nasıl kullanılacağını gösterir:

 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

Yine veri çerçevesindeki satırlar, noktalara göre en büyükten en küçüğe, ardından asistlere göre en küçükten en büyüğe doğru sıralanır.

Not : Arrange() işlevine ilişkin tüm belgeleri burada bulabilirsiniz.

Ek kaynaklar

Aşağıdaki eğitimlerde R’de diğer yaygın sıralama işlemlerinin nasıl gerçekleştirileceği açıklanmaktadır:

R’de değerler alfabetik olarak nasıl sıralanır
R’de bir veri çerçevesi tarihe göre nasıl sıralanır

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir