R Toplama Fonksiyonları: summarise() ve group_by() Örnekleri

⚡ Akıllı Özet

R'da dplyr ile kullanılan toplama fonksiyonu, birçok satırı grup başına tek bir istatistiğe indirger. Bu kılavuz, Lahman vuruş verileri üzerinde group_by() ve summarise() fonksiyonlarını birleştirerek 104,324 gözlem üzerinden ortalamaları, toplamları, farkları, sayıları ve pozisyonel değerleri hesaplar.

  • 🧮 Temel Fiil: summarise(df, name = function(column)) tek bir satır döndürür ve group_by() önce bunu her grup için bir satıra dönüştürür.
  • 📊 İstatistik Aileleri: Ortalama ve medyan merkezi, standart sapma ve çeyrekler arası aralık yayılımı, minimum ve maksimum değerler ise aralığı tanımlar.
  • 🔢 sayma: n() fonksiyonu mevcut gruptaki satır sayısını, n_distinct() fonksiyonu ise bu gruptaki benzersiz değerleri sayar.
  • 📍 Pozisyonel Yardımcılar: first(), last() ve nth() örnekleritracHer gruptan belirli bir gözlem.
  • 🔄 Çok Sütunlu Çalışma: `across()` fonksiyonu, her sütun için kodu tekrarlamadan, tek bir fonksiyonu birden fazla sütuna uygular.
  • 🔓 Grouping Hijyen: Tablonun tamamı üzerinde tekrar çalıştırılması gereken bir hesaplama yapmadan önce her zaman ungroup() fonksiyonunu çağırın.

R Toplama İşlevi

Bu eğitimde kullanılan veri seti

Bir değişkeni özetlemek size veriler hakkında ilk izlenimi verir, ancak onu gruplara göre özetlemek değerlerin nasıl dağıldığı hakkında çok daha fazla bilgi verir. Bu eğitim, dplyr kütüphanesi ile bir veri kümesini gruplara göre nasıl toplayacağınızı göstermektedir.

Bu eğitimde Lahman vuruş veri seti kullanılmaktadır. Veri setini içe aktardıktan sonra...ping Aşağıda listelenen dokuz sütun dışında, çalışma veri çerçevesi 104,324 gözlem ve 9 değişken içermektedir:

  • playerID: Oyuncu kimlik kodu. Faktör
  • yıl kimliği: Yıl. Faktör
  • takım kimliği: Takım. faktör
  • lgID: Lig. Faktör: AA AL FL NL PL UA
  • AB: Yarasalarda. Sayısal
  • G: Oyunlar: Bir oyuncunun oynadığı oyun sayısı. Sayısal
  • R: Koşuyor. Sayısal
  • İK: Homerun'lar. Sayısal
  • SH: Kurban vuruşları. Sayısal

Özetleme yapmadan önce, verileri hazırlamak için aşağıdaki adımları gerçekleştireceksiniz:

  • 1. Adım: Verileri içe aktarın
  • 2. Adım: İlgili değişkenleri seçin
  • 3. Adım: Verileri sıralayın
library(dplyr)

# Step 1
data <- read.csv("https://raw.githubusercontent.com/guru99-edu/R-Programming/master/lahman-batting.csv") %>%

# Step 2
select(c(playerID, yearID, AB, teamID, lgID, G, R, HR, SH))  %>% 

# Step 3
arrange(playerID, teamID, yearID)

Bir veri kümesini içe aktarırken iyi bir uygulama, veri kümesinin yapısı hakkında fikir sahibi olmak için bakış() işlevini kullanmaktır.

# Structure of the data
glimpse(data)

Çıktı:

Observations: 104,324
Variables: 9
$ playerID <fctr> aardsda01, aardsda01, aardsda01, aardsda01, aardsda01, a...
$ yearID   <int> 2015, 2008, 2007, 2006, 2012, 2013, 2009, 2010, 2004, 196...
$ AB       <int> 1, 1, 0, 2, 0, 0, 0, 0, 0, 603, 600, 606, 547, 516, 495, ...
$ teamID   <fctr> ATL, BOS, CHA, CHN, NYA, NYN, SEA, SEA, SFN, ATL, ATL, A...
$ lgID     <fctr> NL, AL, AL, NL, AL, NL, AL, AL, NL, NL, NL, NL, NL, NL, ...
$ G        <int> 33, 47, 25, 45, 1, 43, 73, 53, 11, 158, 155, 160, 147, 15...
$ R        <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 113, 84, 100, 103, 95, 75...
$ HR       <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 39, 29, 44, 38, 47, 34, 40...
$ SH       <int> 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, ...

özetle()

summarise() sözdizimi temeldir ve dplyr kitaplığında bulunan diğer fiillerle tutarlıdır.

summarise(df, variable_name=condition) 
arguments: 
- `df`: Dataset used to construct the summary statistics 
- `variable_name=condition`: Formula to create the new variable

Aşağıdaki koda bakın:

summarise(data, mean_run =mean(R))

Code açıklama

  • summarise(data, ortalama_run = ortalama(R)): Veri kümesi verilerinden çalıştırılan sütunun ortalaması olan ortalama_run adında bir değişken oluşturur.

Çıktı:

##   mean_run
## 1 19.20114

İstediğiniz kadar değişken ekleyebilirsiniz. Oynanan ortalama oyunları ve ortalama fedakarlık vuruşlarını geri verirsiniz.

summarise(data, mean_games = mean(G),
    mean_SH = mean(SH, na.rm = TRUE))

Code açıklama

  • ortalama_SH = ortalama(SH, na.rm = TRUE): İkinci bir değişkeni özetleyin. SH sütunu eksik gözlemler içerdiğinden na.rm = TRUE değerini ayarlarsınız.

Çıktı:

##   mean_games  mean_SH
## 1   51.98361 2.340085

group_by() kullanımı ile group_by() kullanılmaması arasındaki fark

Tek başına kullanıldığında, summarise() fonksiyonu yukarıdaki örneklerde gösterildiği gibi tüm veri çerçevesini tek bir satıra indirger. Gerçek gücü ise group_by() fonksiyonunu eklediğinizde ortaya çıkar: dplyr Kütüphane daha sonra aynı hesaplamayı her gruba ayrı ayrı uygular ve grup başına bir satır döndürür.

group_by'nin diğer tüm fiillerle (yani mutate(), filter(),range(), …) mükemmel şekilde çalıştığını unutmayın.

Birden fazla adımınız olduğunda boru hattı operatörünü kullanmak uygundur. Ortalama homerun'ı beyzbol ligine göre hesaplayabilirsiniz.

data %>%
	group_by(lgID) %>%
	summarise(mean_run = mean(HR))

Code açıklama

  • veri: Özet istatistikleri oluşturmak için kullanılan veri kümesi
  • group_by(lgID): Özetleme işleminden önce verileri lgID değerlerine göre ayırın.
  • summarise(mean_run = ortalama(HR)): Ortalama homerun'u hesaplayın

Çıktı:

## 
# A tibble: 7 x 2
##     lgID  mean_run
##   <fctr>     <dbl>
## 1     AA 0.9166667
## 2     AL 3.1270988
## 3     FL 1.3131313
## 4     NL 2.8595953
## 5     PL 2.5789474
## 6     UA 0.6216216
## 7   <NA> 0.2867133	

Bu işlem, ggplot() ile de çalışır, bu nedenle ham verilerden bitmiş grafiğe kadar tüm zincir tek bir ifadede kalır. Aşağıdaki kod, group_by(), summarise() ve ggplot() fonksiyonlarını birleştirerek lig başına ortalama ev koşularını çubuk grafik olarak gösterir.

Aşağıdaki adımı uygulayacaksınız:

  • 1. Adım: Veri çerçevesini seçin
  • 2. Adım: Verileri gruplayın
  • 3. Adım: Verileri özetleyin
  • Adım 4: Özet istatistiklerin grafiğini çizin
library(ggplot2)
# Step 1
data %>% 
#Step 2
group_by(lgID) %>% 
#Step 3
summarise(mean_home_run = mean(HR)) %>% 
#Step 4
ggplot(aes(x = lgID, y = mean_home_run, fill = lgID)) +
    geom_bar(stat = "identity") +
    theme_classic() +
    labs(
        x = "baseball league",
        y = "Average home run",
        title = paste(
            "Example group_by() with summarise()"
        )
    )

Çıktı:

Özetle Group_by Örneği

summarise() fonksiyonunun içinde kullanabileceğiniz fonksiyonlar

summarise() fiili, R'deki hemen hemen tüm işlevlerle uyumludur. Burada summarise() ile birlikte kullanabileceğiniz yararlı işlevlerin kısa bir listesi bulunmaktadır:

Hedef İşlev Açıklama
Temel kastetmek() x vektörünün ortalaması
medyan() x vektörünün medyanı
toplam() x vektörünün toplamı
varyasyon SD() x vektörünün standart sapması
IQR() x vektörünün çeyrekleri
Aralık dk() Minimum vektör x
maksimum() Maksimum vektör x
çeyreklik() x vektörünün niceliği
Pozisyon ilk() group_by() ile kullanın Grubun ilk gözlemi
son() group_by() ile kullanın. Grubun son gözlemi
n'inci() group_by() ile kullanın. grubun n'inci gözlemi
saymak n () group_by() ile kullanın. Satır sayısını sayın
n_distinct() group_by() ile kullanın. Farklı gözlemlerin sayısını sayın

Aşağıdaki bölümler, yukarıdaki tabloda yer alan her bir fonksiyon için bir örnek üzerinden ilerlemektedir. Eğer boru (pipe) ve diğer fiiller konusunda yeniyseniz, şunlarla başlayın: Seçme, filtreleme ve düzenleme eğitimi.

Temel işlev

Önceki örnekte özet istatistiğini bir veri çerçevesinde saklamadınız.

Özet veriden iki adımda veri çerçevesi oluşturabilirsiniz:

  • Adım 1: Veri çerçevesini daha sonra kullanmak üzere saklayın
  • Adım 2: Çizgi grafiği oluşturmak için veri kümesini kullanın

) 1 Adım Yıllara göre oynanan ortalama oyun sayısını hesaplarsınız.

## Mean
ex1 <- data %>%
	group_by(yearID) %>%
	summarise(mean_game_year = mean(G))
head(ex1)

Code açıklama

  • Vuruş veri kümesinin özet istatistiği ex1 veri çerçevesinde saklanır.

Çıktı:

## # A tibble: 6 x 2
##   yearID mean_game_year
##    <int>          <dbl>
## 1   1871       23.42308
## 2   1872       18.37931
## 3   1873       25.61538
## 4   1874       39.05263
## 5   1875       28.39535
## 6   1876       35.90625	

) 2 Adım Özet istatistiğini çizgi grafiğiyle gösterir ve trendi görürsünüz.

# Plot the graph
ggplot(ex1, aes(x = yearID, y = mean_game_year)) +
    geom_line() +
    theme_classic() +
    labs(
        x = "Year",
        y = "Average games played",
        title = paste(
            "Average games played from 1871 to 2016"
        )
    )

Çıktı:

Temel Fonksiyon Örneği

alt kümeleme

Summary() işlevi alt kümelemeyle uyumludur.

## Subsetting + Median
data %>%
group_by(lgID) %>%
summarise(median_at_bat_league = median(AB), 
	#Compute the median without the zero 
	median_at_bat_league_no_zero = median(AB[AB > 0]))

Code açıklama

  • medyan_at_bat_league_no_zero = medyan(AB[AB > 0]): AB değişkeni çok sayıda 0 içerir. vuruşta 0 olan ve olmayan değişken.

Çıktı:

## # A tibble: 7 x 3
##     lgID median_at_bat_league median_at_bat_league_no_zero
##   <fctr>                <dbl>                        <dbl>
## 1     AA                  130                          131
## 2     AL                   38                           85
## 3     FL                   88                           97
## 4     NL                   56                           67
## 5     PL                  238                          238
## 6     UA                   35                           35
## 7   <NA>                  101                          101	

Toplam

Değişkeni toplamak için başka bir yararlı işlev sum() işlevidir.

Hangi liglerin daha fazla homerun'a sahip olduğunu kontrol edebilirsiniz.

## Sum
data %>%
	group_by(lgID) %>%
	summarise(sum_homerun_league = sum(HR))

Çıktı:

## # A tibble: 7 x 2
##     lgID sum_homerun_league
##   <fctr>              <int>
## 1     AA                341
## 2     AL              29426
## 3     FL                130
## 4     NL              29817
## 5     PL                 98
## 6     UA                 46
## 7   <NA>                 41	

Standart sapma

Verilerdeki yayılma standart sapma veya R'deki sd() ile hesaplanır.

# Spread
data %>%
	group_by(teamID) %>%
	summarise(sd_at_bat_league = sd(HR))

Çıktı:

## # A tibble: 148 x 2
##    teamID sd_at_bat_league
##    <fctr>            <dbl>
##  1    ALT               NA
##  2    ANA        8.7816395
##  3    ARI        6.0765503
##  4    ATL        8.5363863
##  5    BAL        7.7350173
##  6    BFN        1.3645163
##  7    BFP        0.4472136
##  8    BL1        0.6992059
##  9    BL2        1.7106757
## 10    BL3        1.0000000
## # ... with 138 more rows		

Ev sahibi takımın attığı sayı (home run) dağılımı takımlar arasında büyük farklılık gösteriyor ve ALT, o takımın yalnızca bir satırı olduğu için standart sapma hesaplanamadığından NA değerini döndürüyor.

Minimum ve maksimum

Min() ve max() fonksiyonuyla bir vektörün minimum ve maksimum değerlerine erişebilirsiniz.

Aşağıdaki kod, bir oyuncunun bir sezonda oynadığı en düşük ve en yüksek oyun sayısını döndürür.

# Min and max
data %>%
	group_by(playerID) %>%
	summarise(min_G = min(G),
    max_G = max(G))

Çıktı:

## # A tibble: 10,395 x 3
##     playerID min_G max_G
##       <fctr>       <int>
##  1 aardsda01    53    73
##  2 aaronha01   120   156
##  3  aasedo01    24    66
##  4  abadfe01    18    18
##  5 abadijo01    11    11
##  6 abbated01     3   153
##  7 abbeybe01    11    11
##  8 abbeych01    80   132
##  9 abbotgl01     5    23
## 10 abbotji01    13    29
## # ... with 10,385 more rows

saymak

Grup başına gözlem sayısını hesaplamak her zaman faydalıdır. R'da n() fonksiyonu, geçerli gruptaki satır sayısını döndürür.

Örneğin aşağıdaki kod, her oyuncunun oynadığı yıl sayısını hesaplar.

# count observations
data %>%
	group_by(playerID) %>%
	summarise(number_year = n()) %>%
	arrange(desc(number_year))

Çıktı:

## # A tibble: 10,395 x 2
##     playerID number_year
##       <fctr>       <int>
##  1 pennohe01          11
##  2 joosted01          10
##  3 mcguide01          10
##  4  rosepe01          10
##  5 davisha01           9
##  6 johnssi01           9
##  7  kaatji01           9
##  8 keelewi01           9
##  9 marshmi01           9
## 10 quirkja01           9
## # ... with 10,385 more rows

İlk ve son

Bir grubun ilk, son veya n'inci konumunu seçebilirsiniz.

Örneğin her oyuncunun ilk ve son yılını bulabilirsiniz.

# first and last
data %>%
	group_by(playerID) %>%
	summarise(first_appearance = first(yearID),
		last_appearance = last(yearID))

Çıktı:

## # A tibble: 10,395 x 3
##     playerID first_appearance last_appearance
##       <fctr>            <int>           <int>
##  1 aardsda01             2009            2010
##  2 aaronha01             1973            1975
##  3  aasedo01             1986            1990
##  4  abadfe01             2016            2016
##  5 abadijo01             1875            1875
##  6 abbated01             1905            1897
##  7 abbeybe01             1894            1894
##  8 abbeych01             1895            1897
##  9 abbotgl01             1973            1979
## 10 abbotji01             1992            1996
## # ... with 10,385 more rows

n'inci gözlem

nth() fonksiyonu first() ve last() fonksiyonlarını tamamlar. Her grup içinde belirttiğiniz indeksteki gözlemi döndürür.

Örneğin, bir takımın yalnızca oynadığı ikinci yılı filtreleyebilirsiniz.

# nth
data %>%
	group_by(teamID) %>%
	summarise(second_game = nth(yearID, 2)) %>%
	arrange(second_game)

Çıktı:

## # A tibble: 148 x 2
##    teamID second_game
##    <fctr>       <int>
##  1    BS1        1871
##  2    CH1        1871
##  3    FW1        1871
##  4    NY2        1871
##  5    RC1        1871
##  6    BR1        1872
##  7    BR2        1872
##  8    CL1        1872
##  9    MID        1872
## 10    TRO        1872
## # ... with 138 more rows

Farklı sayıda gözlem

n() fonksiyonu, geçerli gruptaki satır sayısını döndürür. İlgili n_distinct() fonksiyonu ise bunun yerine benzersiz değerleri sayar.

Bir sonraki örnekte, bir takımın tüm dönemlerde işe aldığı oyuncuların toplamını topluyorsunuz.

# distinct values
data %>%
	group_by(teamID) %>%
	summarise(number_player = n_distinct(playerID)) %>%
	arrange(desc(number_player))

Code açıklama

  • group_by(teamID): Takıma göre gruplandır
  • özetle(number_player = n_farklı(oyuncuID'si): Takım başına farklı oyuncu sayısını sayın
  • düzenleme(desc(number_player))): Verileri oynatıcı sayısına göre sıralayın

Çıktı:

## # A tibble: 148 x 2
##    teamID number_player
##    <fctr>         <int>
##  1    CHN           751
##  2    SLN           729
##  3    PHI           699
##  4    PIT           683
##  5    CIN           679
##  6    BOS           647
##  7    CLE           646
##  8    CHA           636
##  9    DET           623
## 10    NYA           612
## # ... with 138 more rows

Birden çok grup

Birden fazla grup arasında özet bir istatistik gerçekleştirilebilir.

# Multiple groups
data %>%
	group_by(yearID, teamID) %>%
	summarise(mean_games = mean(G)) %>%
	arrange(desc(teamID, yearID))

Code açıklama

  • group_by(yılID, takımID): Yıla göre grupla hem de takım
  • summarise(mean_games = mean(G)): Oynanan oyun sayısının ortalamasını al
  • düzenleme(desc(teamID, yılID))): Verileri takıma ve yıla göre sıralayın

Çıktı:

## # A tibble: 2,829 x 3
## # Groups:   yearID [146]
##    yearID teamID mean_games
##     <int> <fctr>      <dbl>
##  1   1884    WSU   20.41667
##  2   1891    WS9   46.33333
##  3   1886    WS8   22.00000
##  4   1887    WS8   51.00000
##  5   1888    WS8   27.00000
##  6   1889    WS8   52.42857
##  7   1884    WS7    8.00000
##  8   1875    WS6   14.80000
##  9   1873    WS5   16.62500
## 10   1872    WS4    4.20000
## # ... with 2,819 more rows

Filtrele

Bir işlem yapmayı düşünmeden önce veri kümesini filtreleyebilirsiniz. Veri seti 1871'de başlıyor ve analizin 1980'den önceki yıllara ihtiyacı yok.

# Filter
data %>%
	filter(yearID > 1980) %>%
	group_by(yearID) %>%
	summarise(mean_game_year = mean(G))

Code açıklama

  • filter(yearID > 1980): Verileri yalnızca ilgili yılları gösterecek şekilde filtreleyin (örn. 1980 sonrası)
  • group_by(yearID): Yıla göre grupla
  • summarise(mean_game_year = ortalama(G)): Verileri özetleyin

Çıktı:

## # A tibble: 36 x 2
##    yearID mean_game_year
##     <int>          <dbl>
##  1   1981       40.64583
##  2   1982       56.97790
##  3   1983       60.25128
##  4   1984       62.97436
##  5   1985       57.82828
##  6   1986       58.55340
##  7   1987       48.74752
##  8   1988       52.57282
##  9   1989       58.16425
## 10   1990       52.91556
## # ... with 26 more rows

Çöz

Son olarak, toprağı temizlemelisiniz.ping Hesaplamanın çalıştırıldığı seviyeyi değiştirmeden önce. ungroup() olmadan, ikinci summarise() işlemi yine de oyuncu başına çalışırdı.

# Ungroup the data
data %>%
	filter(HR > 0) %>%
	group_by(playerID) %>%
	summarise(average_HR_game = sum(HR) / sum(G)) %>%
	ungroup() %>%
	summarise(total_average_homerun = mean(average_HR_game))

Code açıklama

  • filter(HR >0): Sıfır homerun'u hariç tut
  • group_by(playerID): oyuncuya göre grupla
  • summarise(average_HR_game = sum(HR)/sum(G)): Oyuncuya göre ortalama homerun'u hesaplayın
  • ungroup(): grubu kaldırping
  • summarise(total_average_homerun = ortalama(average_HR_game)): Verileri özetleyin

Çıktı:

## # A tibble: 1 x 1
##   total_average_homerun
##                   <dbl>
## 1            0.06882226	

across() fonksiyonu ile birden fazla sütunu nasıl özetleyebilirsiniz?

Yukarıdaki örneklerin her birinde sütunlardan yalnızca biri adlandırılmıştır. Birçok sütun için aynı istatistiğe ihtiyaç duyulduğunda, across() fonksiyonu bunu tek bir çağrıda hepsine uygular.

# One function, several columns
data %>%
    group_by(lgID) %>%
    summarise(across(c(R, HR, G), mean, .names = "mean_{.col}"))

# Every numeric column at once
data %>%
    group_by(lgID) %>%
    summarise(across(where(is.numeric), mean, na.rm = TRUE))

# Several functions applied to several columns
data %>%
    group_by(teamID) %>%
    summarise(across(c(R, HR), list(avg = mean, total = sum)))

Davranışı üç argüman kontrol eder:

  • .sütunlarİşlem yapılacak sütunlar, select() ile aynı yardımcı fonksiyonlar kullanılarak yazılmıştır; where(is.numeric) fonksiyonu da buna dahildir.
  • .fns: Her sütuna uygulanacak bir fonksiyon veya adlandırılmış bir fonksiyon listesi.
  • .isimlerÇıktı için adlandırma kalıbı; burada {.col} sütun adını, {.fn} ise fonksiyon adını temsil eder.

`cross()` fonksiyonu, `dplyr` 1.0.0 sürümünde eski `summarise_all()`, `summarise_at()` ve `summarise_if()` yardımcı fonksiyonlarının yerini aldı. Bunlar hala çalışıyor ancak yerini yenilerine bıraktılar, bu nedenle yeni kodlarda `cross()` kullanılmalıdır.

summarise() fonksiyonunda sık karşılaşılan hatalar ve bunların nasıl düzeltileceği

En büyük başarısızlıkla sonuçlanan toplama işlemlerinin dört temel nedeni vardır.

  • Sonuç NA'dır. mean() ve sum() fonksiyonları, herhangi bir değer eksikse NA döndürür. Yukarıdaki mean_SH örneğinde olduğu gibi na.rm = TRUE ekleyin.
  • “summarise() gruplandırılmış çıktıya sahip” mesajı. Grouping İki değişkeni kullanmak, sonucu ilk değişkene göre gruplandırır. Gruplandırmayı kaldırmak için `.groups = “drop”` ifadesini kullanın.pingYa da sonrasında ungroup() fonksiyonunu çağırın.
  • Daha sonra yapılan bir hesaplama yanlış seviyeyi gösteriyor. Bir veri çerçevesi, gruplandırmayı kaldırana kadar gruplandırılmış halde kalır, bu nedenle her grup için ikinci bir summarise() işlemi yine de çalışır. ungroup() örneği tam olarak bunu göstermektedir.
  • Çıktıda beklenenden daha fazla satır var. summarise() fonksiyonu her grup için bir satır döndürür, bu nedenle istenmeyen bir grup olabilir.ping Değişken, çıktıyı çarpar. Herhangi bir tibble'ın üzerinde yazdırılan "Gruplar:" satırını kontrol edin.
# Drop the grouping as part of the call
data %>%
    group_by(yearID, teamID) %>%
    summarise(mean_games = mean(G), .groups = "drop")

R'de summarise() fonksiyonu: Fonksiyon Referansı

Gruplara göre özet döndürmek için önce verileri ayırın:

# group by X1, X2, X3
group_by(df, X1, X2, X3)

ve toprağı çıkarınping Hesaplama seviyesi değiştiğinde:

ungroup(df)

Aşağıdaki tabloda bu eğitimde summarise() fonksiyonuyla birlikte kullanılan tüm fonksiyonlar listelenmiştir:

Yöntem İşlev Code
ortalama ortalama
summarise(df, mean_x1 = mean(x1))
medyan medyan
summarise(df, median_x1 = median(x1))
toplam toplam
summarise(df, sum_x1 = sum(x1))
standart sapma sd
summarise(df, sd_x1 = sd(x1))
çeyrekler arası I.Q.R.
summarise(df, interquartile_x1 = IQR(x1))
asgari dk
summarise(df, minimum_x1 = min(x1))
maksimum maksimum
summarise(df, maximum_x1 = max(x1))
çeyreklik çeyreklik
summarise(df, quantile_x1 = quantile(x1, probs = 0.75))
ilk gözlem ilk
summarise(df, first_x1 = first(x1))
son gözlem son
summarise(df, last_x1 = last(x1))
n'inci gözlem n'inci
summarise(df, nth_x1 = nth(x1, 2))
meydana gelme sayısı n
summarise(df, n_x1 = n())
farklı oluşum sayısı n_farklı
summarise(df, n_distinct_x1 = n_distinct(x1))

SSS

`summarise()` fonksiyonu her grubu tek bir istatistik satırına indirger. `mutate()` fonksiyonu ise her satırı korur ve yeni bir sütun ekler. Grup istatistiğinin orijinal gözlemlerin yanında yer alması gerektiğinde `mutate()` fonksiyonunu kullanın.

Grouping İki veya daha fazla değişkeni kullanmak, sonucu sonuncusu hariç tümüne göre gruplandırır. dplyr sizi uyarır çünkü sonraki fiiller sessizce her grup için çalışır. Bunu önlemek için .groups = “drop” ifadesini kullanın.

n() fonksiyonu, tekrarlanan satırlar da dahil olmak üzere geçerli gruptaki her satırı sayar. n_distinct() fonksiyonu ise bir sütundaki benzersiz değerleri sayar. Bir oyuncunun birçok sezonda yer alması nedeniyle, takım başına oyuncu sayısını saymak için n_distinct() fonksiyonuna ihtiyaç duyulur.

Müşteri ortalamaları, sayıları ve güncellik değerleri gibi grup düzeyindeki toplamlar, tablo tabanlı yapay zeka modellerinde en güçlü tahminciler arasındadır. `group_by()` ve `summarise()` fonksiyonları, bunları tekrarlanabilir şekilde oluşturmanın standart yoludur.

Evet. Yapay zeka asistanları aggregate() ve tapply() fonksiyonlarını group_by() ve summarise() işlem hatları olarak yeniden yazabilir. Her iki sürümdeki satır sayılarını karşılaştırın, çünkü temel R ve dplyr eksik grupları farklı şekilde ele alıyor.

Bu yazıyı şu şekilde özetleyin: