Fungsi Agregat R: summarise() & group_by() Contoh

โšก Ringkasan Cerdas

Fungsi Aggregate di R dengan dplyr menggabungkan banyak baris menjadi satu statistik per grup. Panduan ini menggabungkan group_by() dengan summarise() pada data batting Lahman untuk menghitung rata-rata, jumlah, sebaran, hitungan, dan nilai posisi di seluruh 104,324 observasi.

  • ๐Ÿงฎ Kata Kerja Inti: summarise(df, name = function(column)) mengembalikan satu baris, dan group_by() pertama-tama mengubahnya menjadi satu baris per grup.
  • ๐Ÿ“Š Kelompok Statistik: Rata-rata dan median menggambarkan titik tengah, simpangan baku dan IQR menggambarkan sebaran, sedangkan nilai minimum dan maksimum menggambarkan rentang.
  • ๐Ÿ”ข Perhitungan: Fungsi n() menghitung jumlah baris dalam grup saat ini dan n_distinct() menghitung nilai unik di dalamnya.
  • ๐Ÿ“ Pembantu Posisi: first(), last(), dan nth() contohtracpengamatan spesifik dari setiap kelompok.
  • ๐Ÿ”„ Pekerjaan Multi-Kolom: Fungsi across() menerapkan satu fungsi ke banyak kolom tanpa mengulang kode untuk setiap kolom.
  • ๐Ÿ”“ Grouping Hygiene: Selalu panggil ungroup() sebelum melakukan perhitungan yang harus dijalankan kembali pada seluruh tabel.

Fungsi Agregat R

Dataset yang Digunakan dalam Tutorial Ini

Meringkas suatu variabel memberi Anda gambaran awal tentang data, dan meringkasnya berdasarkan kelompok memberi tahu Anda lebih banyak tentang bagaimana nilai-nilai tersebut terdistribusi. Tutorial ini menunjukkan cara mengagregasi dataset berdasarkan kelompok dengan pustaka dplyr.

Tutorial ini menggunakan dataset batting Lahman. Setelah mengimpornya dan menyimpannya...ping Hanya dengan sembilan kolom yang tercantum di bawah ini, kerangka data kerja memuat 104,324 observasi dan 9 variabel:

  • playerID: Kode ID pemain. Faktor
  • ID tahun: Tahun. Faktor
  • ID tim: Tim. faktor
  • lgID: Liga. Faktor: AA AL FL NL PL UA
  • AB: Pada kelelawar. numerik
  • G: Permainan: jumlah permainan yang dilakukan seorang pemain. numerik
  • R: Berlari. numerik
  • HR: Homerun. numerik
  • SH: Pengorbanan berhasil. numerik

Sebelum Anda melakukan ringkasan, Anda akan melakukan langkah-langkah berikut untuk menyiapkan data:

  • Langkah 1: Impor data
  • Langkah 2: Pilih variabel yang relevan
  • Langkah 3: Urutkan datanya
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)

Praktik yang baik saat Anda mengimpor kumpulan data adalah dengan menggunakan fungsi sekilas() untuk mendapatkan gambaran tentang struktur kumpulan data.

# Structure of the data
glimpse(data)

Keluaran:

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, ...

meringkaskan()

Sintaks summarise() bersifat dasar dan konsisten dengan kata kerja lain yang disertakan dalam perpustakaan dplyr.

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

Lihatlah kode di bawah ini:

summarise(data, mean_run =mean(R))

Code Penjelasan

  • summarise(data, mean_run = mean(R)): Membuat variabel bernama mean_run yang merupakan rata-rata kolom yang dijalankan dari dataset.

Keluaran:

##   mean_run
## 1 19.20114

Anda dapat menambahkan variabel sebanyak yang Anda inginkan. Anda mengembalikan rata-rata permainan yang dimainkan dan rata-rata pengorbanan yang berhasil.

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

Code Penjelasan

  • mean_SH = mean(SH, na.rm = TRUE): Ringkaslah variabel kedua. Anda menyetel na.rm = TRUE karena kolom SH berisi observasi yang hilang.

Keluaran:

##   mean_games  mean_SH
## 1   51.98361 2.340085

group_by() vs Tanpa group_by()

Jika digunakan sendiri, summarise() akan menggabungkan seluruh data frame menjadi satu baris, seperti yang ditunjukkan contoh di atas. Kekuatan sebenarnya muncul setelah Anda menambahkan group_by(): dplyr Kemudian, library tersebut menerapkan perhitungan yang sama secara terpisah untuk setiap grup dan mengembalikan satu baris per grup.

Perhatikan bahwa, group_by berfungsi sempurna dengan semua kata kerja lainnya (yaitu mutate(), filter(), arrange(),โ€ฆ).

Akan lebih mudah untuk menggunakan operator saluran pipa ketika Anda memiliki lebih dari satu langkah. Anda dapat menghitung rata-rata homerun berdasarkan liga bisbol.

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

Code Penjelasan

  • data: Kumpulan data yang digunakan untuk membuat ringkasan statistik
  • group_by(lgID): Pisahkan data berdasarkan nilai lgID sebelum melakukan ringkasan.
  • summarise(mean_run = mean(HR)): Hitung rata-rata homerun

Keluaran:

## 
# 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	

Pipe juga berfungsi dengan ggplot(), sehingga seluruh rangkaian dari data mentah hingga grafik jadi tetap berada dalam satu pernyataan. Kode di bawah ini menggabungkan group_by(), summarise(), dan ggplot() untuk menampilkan rata-rata home run per liga sebagai grafik batang.

Anda akan melakukan langkah berikut:

  • Langkah 1: Pilih bingkai data
  • Langkah 2: Kelompokkan data
  • Langkah 3: Ringkas datanya
  • Langkah 4: Plot ringkasan statistik
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()"
        )
    )

Keluaran:

Group_by Contoh dengan Ringkas

Fungsi yang Dapat Anda Gunakan di Dalam summarise()

Kata kerja summarise() kompatibel dengan hampir semua fungsi di R. Berikut adalah daftar singkat fungsi berguna yang dapat Anda gunakan bersama dengan summarise():

Tujuan fungsi Deskripsi
Dasar berarti() Rata-rata vektor x
median () Median vektor x
jumlah() Jumlah vektor x
variasi sd() simpangan baku vektor x
IQR() Interkuartil vektor x
Jarak min () Minimal vektor x
maks() Maksimum vektor x
kuantil() Kuantil vektor x
Posisi pertama() Gunakan dengan group_by() Pengamatan pertama grup
terakhir() Gunakan dengan group_by(). Pengamatan terakhir kelompok
ke-n() Gunakan dengan group_by(). pengamatan kelompok yang ke-n
Menghitung n () Gunakan dengan group_by(). Hitung jumlah barisnya
n_berbeda() Gunakan dengan group_by(). Hitung jumlah pengamatan yang berbeda

Bagian-bagian di bawah ini membahas contoh untuk setiap fungsi dalam tabel di atas. Jika Anda baru mengenal pipe dan verb lainnya, mulailah dengan... tutorial memilih, menyaring, dan menyusun.

Fungsi dasar

Pada contoh sebelumnya, Anda tidak menyimpan statistik ringkasan dalam bingkai data.

Anda dapat membuat data frame dari ringkasan dalam dua langkah:

  • Langkah 1: Simpan bingkai data untuk digunakan lebih lanjut
  • Langkah 2: Gunakan kumpulan data untuk membuat plot garis

Langkah 1) Anda menghitung jumlah rata-rata permainan yang dimainkan menurut tahun.

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

Code Penjelasan

  • Statistik ringkasan kumpulan data batting disimpan dalam bingkai data ex1.

Keluaran:

## # 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	

Langkah 2) Anda menampilkan ringkasan statistik dengan plot garis dan melihat trennya.

# 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"
        )
    )

Keluaran:

Contoh Fungsi Dasar

Sub-pengaturan

Fungsi summarise() kompatibel dengan subsetting.

## 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 Penjelasan

  • median_at_bat_league_no_zero = median(AB[AB > 0]): Variabel AB berisi banyak 0. Anda dapat membandingkan median dari di kelelawar variabel dengan dan tanpa 0.

Keluaran:

## # 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	

Jumlah

Fungsi lain yang berguna untuk menggabungkan variabel adalah sum().

Anda dapat memeriksa liga mana yang memiliki homeruns lebih banyak.

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

Keluaran:

## # 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	

Standar deviasi

Penyebaran data dihitung dengan standar deviasi atau sd() di R.

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

Keluaran:

## # 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		

Selisih jumlah home run sangat berbeda antar tim, dan ALT mengembalikan NA karena tim tersebut hanya memiliki satu baris, sehingga deviasi standar tidak dapat dihitung.

Minimal dan maksimal

Anda dapat mengakses vektor minimum dan maksimum dengan fungsi min() dan max().

Kode di bawah menampilkan jumlah permainan terendah dan tertinggi dalam satu musim yang dimainkan oleh seorang pemain.

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

Keluaran:

## # 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

Menghitung

Menghitung observasi per grup selalu bermanfaat. Di R, n() mengembalikan jumlah baris dalam grup saat ini.

Misalnya, kode di bawah ini menghitung jumlah tahun yang dimainkan oleh setiap pemain.

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

Keluaran:

## # 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

Pertama dan terakhir

Anda dapat memilih posisi pertama, terakhir, atau ke-n dalam suatu grup.

Misalnya, Anda dapat menemukan tahun pertama dan terakhir setiap pemain.

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

Keluaran:

## # 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

observasi ke-n

Fungsi nth() melengkapi fungsi first() dan last(). Fungsi ini mengembalikan observasi pada indeks yang Anda berikan di dalam setiap grup.

Misalnya, Anda hanya dapat memfilter tahun kedua tim bermain.

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

Keluaran:

## # 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

Jumlah pengamatan yang berbeda

Fungsi n() mengembalikan jumlah baris dalam grup saat ini. Fungsi terkait n_distinct() menghitung nilai unik.

Pada contoh berikutnya, Anda menjumlahkan total pemain yang direkrut tim selama semua periode.

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

Code Penjelasan

  • group_by(teamID): Kelompokkan berdasarkan tim
  • rangkum(angka_pemain = n_berbeda(playerID)): Hitung pemain unik per tim
  • arrange(desc(number_player)): Urutkan data berdasarkan jumlah pemain

Keluaran:

## # 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

Beberapa kelompok

Statistik ringkasan dapat diwujudkan di antara banyak kelompok.

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

Code Penjelasan

  • group_by(yearID, teamID): Kelompokkan berdasarkan tahun ke tim
  • summarise(mean_games = mean(G)): Rata-ratakan jumlah permainan yang dimainkan
  • arrange(desc(teamID, yearID)): Urutkan data berdasarkan tim dan tahun

Keluaran:

## # 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

Filter

Sebelum Anda ingin melakukan suatu operasi, Anda dapat memfilter kumpulan data. Kumpulan datanya dimulai pada tahun 1871, dan analisisnya tidak memerlukan tahun-tahun sebelum tahun 1980.

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

Code Penjelasan

  • filter(yearID > 1980): Filter data untuk hanya menampilkan tahun yang relevan (misalnya setelah 1980)
  • group_by(yearID): Kelompokkan berdasarkan tahun
  • summarise(mean_game_year = mean(G)): Ringkas datanya

Keluaran:

## # 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

Ungroup

Terakhir, Anda harus menghapus groundping sebelum mengubah level di mana perhitungan dijalankan. Tanpa ungroup(), summarise() kedua akan tetap beroperasi per pemain.

# 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 Penjelasan

  • filter(HR >0) : Kecualikan homerun nol
  • group_by(playerID): grup demi pemain
  • summarise(average_HR_game = sum(HR)/sum(G)): Hitung rata-rata homerun berdasarkan pemain
  • ungroup(): menghapus grupping
  • summarise(total_average_homerun = mean(average_HR_game)): Ringkas datanya

Keluaran:

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

Cara Meringkas Beberapa Kolom dengan across()

Setiap contoh di atas menyebutkan satu kolom pada satu waktu. Ketika statistik yang sama dibutuhkan untuk banyak kolom, across() menerapkannya ke semua kolom tersebut dalam satu panggilan.

# 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)))

Tiga argumen mengendalikan perilaku tersebut:

  • .kolom: kolom-kolom yang akan dioperasikan, ditulis dengan bantuan yang sama seperti select(), termasuk where(is.numeric).
  • .fns: satu fungsi, atau daftar fungsi bernama yang akan diterapkan pada setiap kolom.
  • nama: pola penamaan untuk output, di mana {.col} adalah kolom dan {.fn} adalah nama fungsi.

Fungsi across() menggantikan fungsi pembantu summarise_all(), summarise_at(), dan summarise_if() yang lebih lama di dplyr 1.0.0. Fungsi-fungsi tersebut masih berjalan tetapi sudah digantikan, jadi kode baru harus menggunakan across().

Kesalahan Umum pada Fungsi summarise() dan Cara Memperbaikinya

Empat masalah menjadi penyebab sebagian besar kegagalan agregasi.

  • Hasilnya adalah NA. Fungsi mean() dan sum() mengembalikan NA jika ada nilai yang hilang. Tambahkan na.rm = TRUE, seperti contoh mean_SH di atas.
  • Pesan โ€œsummarise() telah mengelompokkan outputโ€. Grouping Dengan menggunakan dua variabel, hasilnya akan dikelompokkan berdasarkan variabel pertama. Lewatkan `.groups = โ€œdropโ€` untuk menghapus pengelompokan tersebut.pingatau panggil ungroup() setelahnya.
  • Perhitungan selanjutnya memberikan nilai yang salah. Sebuah data frame tetap dikelompokkan sampai Anda membatalkan pengelompokannya, jadi fungsi summarise() kedua masih dijalankan untuk setiap kelompok. Inilah yang ditunjukkan oleh contoh ungroup().
  • Outputnya memiliki lebih banyak baris daripada yang diharapkan. summarise() mengembalikan satu baris per grup, jadi grup yang tidak disengajaping Variabel tersebut mengalikan output. Periksa baris โ€œGroups:โ€ yang tercetak di atas setiap tibble.
# Drop the grouping as part of the call
data %>%
    group_by(yearID, teamID) %>%
    summarise(mean_games = mean(G), .groups = "drop")

Fungsi summarise() di R: Referensi Fungsi

Untuk mendapatkan ringkasan berdasarkan grup, pisahkan data terlebih dahulu:

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

dan singkirkan tanahnyaping ketika perhitungan berubah level:

ungroup(df)

Tabel di bawah ini mencantumkan setiap fungsi yang digunakan dengan summarise() dalam tutorial ini:

metode fungsi Code
berarti berarti
summarise(df, mean_x1 = mean(x1))
rata-rata rata-rata
summarise(df, median_x1 = median(x1))
jumlah jumlah
summarise(df, sum_x1 = sum(x1))
standar deviasi sd
summarise(df, sd_x1 = sd(x1))
antarkuartil I.Q.R.
summarise(df, interquartile_x1 = IQR(x1))
minimum menit
summarise(df, minimum_x1 = min(x1))
maksimum max
summarise(df, maximum_x1 = max(x1))
kuantil kuantil
summarise(df, quantile_x1 = quantile(x1, probs = 0.75))
pengamatan pertama pertama
summarise(df, first_x1 = first(x1))
pengamatan terakhir terakhir
summarise(df, last_x1 = last(x1))
observasi ke-n n
summarise(df, nth_x1 = nth(x1, 2))
jumlah kejadian n
summarise(df, n_x1 = n())
jumlah kejadian yang berbeda n_berbeda
summarise(df, n_distinct_x1 = n_distinct(x1))

Pertanyaan Umum Demo Slot

Fungsi `summarise()` menggabungkan setiap grup menjadi satu baris statistik. Fungsi `mutate()` mempertahankan setiap baris dan menambahkan kolom baru. Gunakan `mutate()` ketika statistik grup harus berada di samping observasi asli.

Grouping Jika menggunakan dua variabel atau lebih, hasilnya akan dikelompokkan berdasarkan semua variabel kecuali variabel terakhir. dplyr memberikan peringatan karena kata kerja selanjutnya akan dijalankan secara diam-diam per grup. Gunakan `.groups = โ€œdropโ€` untuk menghindarinya.

Fungsi `n()` menghitung setiap baris dalam grup saat ini, termasuk pengulangan. Fungsi `n_distinct()` menghitung nilai unik dalam sebuah kolom. Menghitung pemain per tim membutuhkan `n_distinct()`, karena satu pemain muncul di banyak musim.

Agregat tingkat grup seperti rata-rata pelanggan, jumlah, dan nilai kekinian adalah salah satu prediktor terkuat dalam model AI tabular. Fungsi `group_by()` dengan `summarise()` adalah cara standar untuk membangunnya secara berulang.

Ya. Asisten AI dapat menulis ulang fungsi aggregate() dan tapply() sebagai pipeline group_by() dan summarise(). Bandingkan jumlah baris pada kedua versi, karena R dasar dan dplyr menangani grup yang hilang secara berbeda.

Ringkaslah postingan ini dengan: