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