0Pricing
R Academy · Ders

Gruplandırılmış Özetler ve group_by()

Verileri gruplara göre toplulaştırın ve grup başına istatistikler hesaplayın.

Gruplandırılmış Özetler ve group_by(), CoddyKit'te ücretsiz bir R Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, R Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. R Academy kursu toplamda 4 dersten oluşur.

Veriler Neden Gruplanır?

Verileri gruplamak, veri analizindeki en güçlü işlemlerden biridir. İstatistikleri tüm veri kümesi üzerinde hesaplamak yerine, bunları her grup içinde hesaplarsınız. dplyr paketi, bunu group_by() işlevinin ardından summarize() kullanarak sezgisel hâle getirir.

library(dplyr)

# Sample sales data
sales <- data.frame(
  region = c('North','North','South','South','East'),
  revenue = c(120, 95, 200, 175, 88),
  units = c(10, 8, 15, 12, 7)
)

print(sales)

group_by() Temelleri

group_by(col), bir veri çerçevesini sonraki işlemler grup başına gerçekleşecek şekilde işaretler. Verilerin kendisini değiştirmez; gruplama üst verileri ekler. Bir veya birden çok sütuna göre gruplama yapabilirsiniz.

library(dplyr)

sales <- data.frame(
  region = c('North','North','South','South','East'),
  revenue = c(120, 95, 200, 175, 88),
  units = c(10, 8, 15, 12, 7)
)

# Group by region
grouped <- sales %>% group_by(region)
print(grouped)
print(group_keys(grouped))

group_by() Sonrasında summarize()

summarize() (veya summarise()), her grubu tek bir satıra indirger. Yeni sütun adlarını ve uygulanacak özet işlevlerini belirtirsiniz. Yaygın işlevler: n(), mean(), sum(), min(), max().

library(dplyr)

sales <- data.frame(
  region = c('North','North','South','South','East'),
  revenue = c(120, 95, 200, 175, 88),
  units = c(10, 8, 15, 12, 7)
)

sales %>%
  group_by(region) %>%
  summarize(
    n = n(),
    mean_revenue = mean(revenue),
    total_units = sum(units)
  )

n() ile Sayma

summarize() içindeki n(), her gruptaki satır sayısını döndürür. Hiçbir bağımsız değişken gerektirmez. Bir koşulla eşleşen satırları saymak için sum(condition) kullanın. n_distinct(col) benzersiz değerleri sayar.

library(dplyr)

employees <- data.frame(
  dept = c('HR','HR','Eng','Eng','Eng','Sales'),
  salary = c(55000, 60000, 95000, 105000, 90000, 70000),
  senior = c(FALSE, TRUE, TRUE, TRUE, FALSE, FALSE)
)

employees %>%
  group_by(dept) %>%
  summarize(
    count = n(),
    senior_count = sum(senior),
    avg_salary = mean(salary)
  )

Birden Çok Sütuna Göre Gruplama

group_by() işlevine birden çok sütun aktarabilirsiniz. Gruplar, verilerde bulunan değerlerin her birleşimine göre oluşturulur. Bu, çapraz tablolama ve hiyerarşik özetler için kullanışlıdır.

library(dplyr)

orders <- data.frame(
  region = c('North','North','South','South','North','South'),
  product = c('A','B','A','B','A','A'),
  sales = c(100, 200, 150, 250, 120, 180)
)

orders %>%
  group_by(region, product) %>%
  summarize(
    total_sales = sum(sales),
    orders = n(),
    .groups = 'drop'
  )

.groups Bağımsız Değişkeni

summarize() sonrasında sonuç, son gruplama değişkeni dışındaki tüm değişkenlere göre gruplandırılmış olarak kalır. .groups bağımsız değişkeni bunu denetler:

  • 'drop_last' — varsayılan değer; son grup düzeyini kaldırır
  • 'drop' — tüm gruplamayı kaldırır
  • 'keep' — tüm gruplamayı korur
library(dplyr)

df <- data.frame(
  year = c(2022,2022,2023,2023),
  quarter = c('Q1','Q2','Q1','Q2'),
  revenue = c(100, 120, 130, 150)
)

# .groups = 'drop' ensures ungrouped result
result <- df %>%
  group_by(year, quarter) %>%
  summarize(total = sum(revenue), .groups = 'drop')

print(result)
print(is.grouped_df(result))  # FALSE

ungroup() ile Açıkça Gruplamayı Kaldırma

Bir veri çerçevesindeki gruplama üst verilerini kaldırmak için her zaman ungroup() işlevini çağırabilirsiniz. Sonraki işlemlerin grup başına değil, tüm veri üzerinde çalışmasını istediğinizde bu önemlidir.

library(dplyr)

df <- data.frame(
  dept = c('HR','HR','Eng','Eng'),
  salary = c(55000, 60000, 95000, 105000)
)

# Without ungroup: rank is within group
df %>%
  group_by(dept) %>%
  mutate(rank_in_dept = rank(salary)) %>%
  ungroup() %>%
  mutate(rank_overall = rank(salary))

group_keys() ve n_groups()

group_keys(), benzersiz grup birleşimlerini gösteren bir veri çerçevesi döndürür. n_groups() kaç grubun bulunduğunu bildirir. Bunlar, gruplandırılmış işlemleri gerçekleştirmeden önce inceleme yapmak için kullanışlıdır.

library(dplyr)

df <- data.frame(
  country = c('US','US','UK','UK','DE'),
  category = c('A','B','A','A','B'),
  value = c(10, 20, 15, 25, 30)
)

grouped <- df %>% group_by(country, category)

cat('Number of groups:', n_groups(grouped), '\n')
print(group_keys(grouped))

Birden Çok İstatistikle Özetleme

Tek bir summarize() çağrısında birçok özet istatistiği hesaplayabilirsiniz. Sayımı, ortalamayı, medyanı, standart sapmayı, minimumu, maksimumu ve özel hesaplamaları aynı anda birleştirin.

library(dplyr)

scores <- data.frame(
  class = c('A','A','A','B','B','B','C','C'),
  score = c(85, 90, 78, 92, 88, 95, 70, 75)
)

scores %>%
  group_by(class) %>%
  summarize(
    n = n(),
    mean_score = round(mean(score), 1),
    median_score = median(score),
    sd_score = round(sd(score), 2),
    min_score = min(score),
    max_score = max(score)
  )

Grupların Farkında Olan mutate()

group_by() sonrasında kullanılan mutate(), tüm satırları koruyarak her grup içinde değerleri hesaplar (summarize() işlevinin aksine). Bu, her satıra eklemek istediğiniz grup düzeyindeki ölçümleri hesaplamak için idealdir.

library(dplyr)

sales <- data.frame(
  region = c('East','East','West','West','West'),
  rep = c('Alice','Bob','Carol','Dave','Eve'),
  revenue = c(150, 200, 120, 180, 160)
)

sales %>%
  group_by(region) %>%
  mutate(
    region_total = sum(revenue),
    pct_of_region = round(100 * revenue / sum(revenue), 1)
  ) %>%
  ungroup()

Gruplar İçinde Filtreleme

group_by() sonrasında kullanılan filter(), grup düzeyindeki koşullara göre satırları filtreler. Örneğin her bölgedeki en başarılı kişiyi veya değeri grup ortalamasını aşan satırları yalnızca koruyabilirsiniz.

library(dplyr)

sales <- data.frame(
  region = c('East','East','West','West','North','North'),
  rep = c('Alice','Bob','Carol','Dave','Eve','Frank'),
  revenue = c(150, 200, 120, 180, 95, 130)
)

# Keep the top rep per region
sales %>%
  group_by(region) %>%
  filter(revenue == max(revenue)) %>%
  ungroup()

Hızlı Kontrol

summarize() içindeki .groups = 'drop' bağımsız değişkeni ne yapar?

Özet: Gruplandırılmış Özetler

Gruplandırılmış özetlerden çıkarılacak önemli noktalar:

  • group_by(col) gruplamayı ekler; veriler değişmez, ancak işlemler grupların farkında olarak gerçekleştirilir
  • summarize() grupları her biri bir satır olacak şekilde indirger; n(), mean(), sum() vb. kullanın
  • .groups = 'drop' sonucun gruplandırılmamış olmasını sağlar
  • ungroup() gruplamayı herhangi bir noktada kaldırır
  • group_keys() grup düzeylerini inceler; n_groups() bunları sayar
  • mutate() + group_by(), satırları birleştirmeden grup düzeyindeki sütunları ekler
library(dplyr)

# Full pipeline example
data.frame(
  dept = c('Eng','Eng','HR','HR','Sales'),
  salary = c(95000, 110000, 60000, 65000, 75000)
) %>%
  group_by(dept) %>%
  summarize(
    headcount = n(),
    avg_salary = mean(salary),
    .groups = 'drop'
  ) %>%
  arrange(desc(avg_salary))

Sıkça Sorulan Sorular

“Gruplandırılmış Özetler ve group_by()” dersi ücretsiz mi?

Evet — “Gruplandırılmış Özetler ve group_by()” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve R Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. R Academy kursu toplamda 4 dersten oluşur.

“Gruplandırılmış Özetler ve group_by()” dersinde ne öğreneceğim?

Verileri gruplara göre toplulaştırın ve grup başına istatistikler hesaplayın. R Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

R Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te R Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“Gruplandırılmış Özetler ve group_by()” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu R Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her R Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Gruplandırılmış Özetler ve group_by()
  2. Pencere İşlevleri: lag, lead, cumsum
  3. dplyr'da Çok Tablolu Birleştirmeler
  4. Düzenli Değerlendirme: {{ }} ve .data
← R Academy Sayfasına Dön