Dplyr'de biri hariç tüm sütunlara göre nasıl gruplandırılır


R’deki dplyr paketini kullanarak bir veri çerçevesindeki biri hariç tüm sütunları gruplandırmak için aşağıdaki temel sözdizimini kullanabilirsiniz:

 df %>%
  group_by(across(c( - this_column)))

Bu özel örnek, veri çerçevesini this_column adı verilen sütun dışındaki tüm sütunlara göre gruplandırır.

Formüldeki eksi işaretinin ( ), dplyr’a o belirli sütunu group_by() işlevinde hariç tutmasını söylediğini unutmayın.

Aşağıdaki örnek, bu sözdiziminin pratikte nasıl kullanılacağını gösterir.

Örnek: dplyr’de biri hariç tüm sütunlara göre gruplama

R’de çeşitli basketbol oyuncuları hakkında bilgi içeren aşağıdaki veri çerçevesine sahip olduğumuzu varsayalım:

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
                 position=c('G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'),
                 starter=c('Y', 'Y', 'Y', 'N', 'Y', 'N', 'N', 'N'),
                 dots=c(99, 104, 119, 113))

#view data frame
df

  team position starter points
1 AGY 99
2 AGY 104
3 AFY 119
4 AFN 113
5 BGY 99
6 BGN 104
7 BFN 119
8 BFN 113

Şimdi, veri çerçevesindeki diğer tüm sütunlarda gruplandırılmış noktalar sütunundaki maksimum değeri bulmak istediğimizi varsayalım.

Bunu yapmak için aşağıdaki sözdizimini kullanabiliriz:

 library (dplyr)

#group by all columns except points column and find max points
df %>%
  group_by(across(c( - points))) %>%
  mutate(max_points = max(points))

# A tibble: 8 x 5
# Groups: team, position, starter [6]
  team position starter points max_points
                 
1 AGY 99 104
2 AGY 104 104
3 AFY 119 119
4 AFN 113 113
5 BGY 99 99
6 BGN 104 104
7 BFN 119 119
8 BFN 113 119

Sonuçtan şunları görebiliriz:

  • Takım değeri A, konum değeri G ve başlangıç değeri Y olan tüm oyuncular için maksimum puan değeri 104 oldu.
  • Takım değeri A, konum değeri F ve başlangıç değeri Y olan tüm oyuncular için maksimum puan değeri 119’du .
  • Takım değeri A, konum değeri F ve başlangıç değeri N olan tüm oyuncular için maksimum puan değeri 113’tü .

Ve benzeri.

Aynı sonucu , noktalar dışındaki tüm sütun adlarını group_by() işlevine yazarsak da alabileceğimizi unutmayın:

 library (dplyr)

#group by all columns except points column and find max points
df %>%
  group_by(across(c(team, position, starter))) %>%
  mutate(max_points = max(points))

# A tibble: 8 x 5
# Groups: team, position, starter [6]
  team position starter points max_points
                 
1 AGY 99 104
2 AGY 104 104
3 AFY 119 119
4 AFN 113 113
5 BGY 99 99
6 BGN 104 104
7 BFN 119 119
8 BFN 113 119

Bu önceki örneğin sonucuna karşılık gelir.

Ancak, diğer tüm sütunların adlarını yazmak yerine, group_by() işlevinde noktalar sütununu hariç tutmanın çok daha kolay olduğunu unutmayın.

Ek kaynaklar

Aşağıdaki eğitimlerde dplyr kullanılarak diğer genel görevlerin nasıl gerçekleştirileceği açıklanmaktadır:

Belirli bir dizeyi içeren satırları dplyr kullanarak nasıl filtreleyebilirim?
Dplyr kullanılarak göreceli frekanslar nasıl hesaplanır?
Dplyr kullanarak gruba göre ilk satır nasıl seçilir

Yorum ekle

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